Тип данных TIMESTAMP
SQL Server не имеет ничего , связанного с датой и временем!
Это просто шестнадцатеричное представление последовательного 8-байтового целого числа - это полезно только для того, чтобы убедиться, что строка не изменилась с момента ее чтения.
Вы можете прочитать шестнадцатеричное целое число или, если хотите, BIGINT
. Как пример:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Результат
400756068
В более новых версиях SQL Server он называется RowVersion
- поскольку это действительно так. См. MSDN документы по ROWVERSION :
Тип данных, который предоставляет автоматически генерируемые уникальные двоичные числа в базе данных. rowversion обычно используется в качестве механизма
для версионно-штамповочных строк таблицы.
тип данных rowversion просто инкрементный номер и не
сохранить дату или время . Для записи даты или времени используйте datetime2
тип данных.
Таким образом, вы не можете преобразовать SQL Server TIMESTAMP
в дату / время - это просто не дата / время.
Но если вы говорите о метке времени, но на самом деле вы имеете в виду столбец DATETIME
, то вы можете использовать любой из этих допустимых форматов даты, описанных в разделе CAST and CONVERT справки MSDN. Они определены и поддерживаются «из коробки» SQL Server. Все остальное не поддерживается, например Вы должны выполнить много ручного приведения и объединения (не рекомендуется).
Формат, который вы ищете, похож на канонический ODBC (style = 121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
дает:
2011-11-14 10:29:00.470
В SQL Server 2012 наконец-то появится функция FORMAT
для пользовательского форматирования ......