TIMESTAMP
SQL Servera typ danych nie ma nic zrobić z datą i godziną!
Jest to po prostu szesnastkowa reprezentacja kolejnej 8-bajtowej liczby całkowitej - jest to dobre tylko dla upewnienia się, że wiersz nie zmienił się od czasu jego odczytania.
Możesz odczytać szesnastkową liczbę całkowitą lub jeśli chcesz BIGINT
. Jako przykład:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Wynik to
400756068
W nowszych wersjach SQL Server nosi on nazwę RowVersion
- bo tak naprawdę jest. Zobacz dokumentację MSDN na ROWVERSION:
To typ danych, który ujawnia automatycznie generowane, unikalne liczby binarne w bazie danych. rowversion jest zwykle używany jako mechanizm oznaczania wersji wierszy tabeli. Typ danychrowversion to tylko rosnąca liczba i nie zachowuje daty ani godziny . Aby zarejestrować datę lub godzinę, użyj typu datetime2data.
Więc nie możesz przekonwertować SQL Server TIMESTAMP
do daty/czasu - to po prostu nie jest data/czas.
Ale jeśli mówisz znacznik czasu, ale tak naprawdę masz na myśli DATETIME
kolumna — możesz użyć dowolnego z tych prawidłowych formatów daty opisanych w tematach PRZESYŁANIE i KONWERTOWANIE w pomocy MSDN. Są one definiowane i obsługiwane „od ręki” przez SQL Server. Wszystko inne nie jest obsługiwane, np. musisz dużo ręcznie rzucać i łączyć (niezalecane).
Format, którego szukasz, przypomina nieco kanoniczny ODBC (styl =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
daje:
2011-11-14 10:29:00.470
SQL Server 2012 w końcu będzie miał FORMAT
funkcja do niestandardowego formatowania......