TIMESTAMP
von SQL Server Datentyp hat nichts mit Datum und Uhrzeit zu tun!
Es ist nur eine hexadezimale Darstellung einer fortlaufenden 8-Byte-Ganzzahl - es ist nur gut, um sicherzustellen, dass sich eine Zeile nicht geändert hat, seit sie gelesen wurde.
Sie können die hexadezimale Ganzzahl ablesen oder wenn Sie möchten, ein BIGINT
. Als Beispiel:
SELECT CAST (0x0000000017E30D64 AS BIGINT)
Das Ergebnis ist
400756068
In neueren Versionen von SQL Server heißt es RowVersion
- denn das ist es wirklich. Siehe die MSDN-Dokumentation auf ROWVERSION:
Ist ein Datentyp, der automatisch generierte, eindeutige Binärzahlen innerhalb einer Datenbank verfügbar macht. rowversion wird im Allgemeinen als Mechanismus zum Versehen von Tabellenzeilen mit Versionsstempeln verwendet. Der Datentyp der Zeilenversion ist nur eine aufsteigende Zahl und behält weder ein Datum noch eine Uhrzeit bei . Um ein Datum oder eine Uhrzeit aufzuzeichnen, verwenden Sie einen datetime2data-Typ.
Sie können also nicht Konvertieren Sie einen SQL Server TIMESTAMP
zu einem Datum/einer Uhrzeit - es ist einfach kein Datum/keine Uhrzeit.
Aber wenn Sie Zeitstempel sagen, meinen Sie wirklich ein DATETIME
-Spalte - dann können Sie eines der gültigen Datumsformate verwenden, die im Thema CAST und CONVERT in der MSDN-Hilfe beschrieben sind. Diese werden von SQL Server "out of the box" definiert und unterstützt. Alles andere wird nicht unterstützt, z. Sie müssen viel manuelles Casting und Verketten durchführen (nicht empfohlen).
Das Format, nach dem Sie suchen, sieht ein bisschen wie das ODBC Canonical aus (Stil =121):
DECLARE @today DATETIME = SYSDATETIME()
SELECT CONVERT(VARCHAR(50), @today, 121)
ergibt:
2011-11-14 10:29:00.470
SQL Server 2012 wird endlich ein FORMAT
haben Funktion zur benutzerdefinierten Formatierung......