Прежде всего, я знаю, что есть несколько подобных вопросов, но ни один из них на самом деле не показывает, как отображать формат даты и времени без включения миллисекунд.
У меня есть этот код ниже:
SELECT CONVERT(
DATETIME,
dateadd(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' as datetime)),
120
)
Однако код включает миллисекунды, но мне нужен такой формат yyyy-mm-dd hh:mm:ss
Кто-нибудь знает эффективный способ сделать это?
Использование datetime2(0)
вместо datetime
также является вариантом.
Ах, бинго!, не знаю, как я не подумал об этом. Спасибо ребята
Вы можете попробовать использовать соответствующий тип данных. Как объясняется в документации , тип данных возвращаемого значения для DATEADD()
является динамическим и зависит от аргумента, предоставленного для параметра date
.
SELECT DATEADD(
second,
CONVERT(int, 1354320201),
CAST('1970-01-01T00:00:00' AS datetime2(0))
)
Результат:
2012-12-01 00:03:21
Попробуйте МАЛЕНЬКИЙ DATETIME
SELECT CAST(DATEADD(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' AS DATETIME))AS SMALLDATETIME)
Кроме того, с помощью FORMAT
SELECT FORMAT(DATEADD(SS,CONVERT(INT, 1354320000), CAST('1970-01-01 00:00:00' AS DATETIME)),'yyyy-MM-dd HH:mm:ss')