Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So wandeln Sie DateTime in Time um

Time wird nicht mit seinem Anzeigeformat gespeichert in SQL Server.
Daher kann man aus Benutzersicht sagen, dass es kein Format hat.
Natürlich ist das nicht ganz korrekt, da es ein Speicherformat hat , aber als durchschnittlicher Benutzer können Sie es nicht wirklich verwenden.
Dies gilt für alle Datums- und Zeitdatentypen:
Date , DateTimeOffset , DateTime2 , SmallDateTime , DateTime und Time .

Wenn Sie ein Format benötigen, müssen Sie nicht auf time umwandeln sondern zu einem char . Verwenden Sie Convert um das char zu erhalten Du brauchst:

SELECT CONVERT(char(10), [time], 108) as CSTTime 

Hier sind einige Hintergrunddaten, falls Sie interessiert sind:

In diesem im Jahr 2000 veröffentlichten Artikel erklärt der Autor ausführlich, wie SQL Server Datums- und Zeitangaben behandelt. Ich bezweifle, dass sich zwischen 2000 und 2015 etwas Wesentliches an der Art und Weise geändert hat, wie SQL Server date speichert , Time und datetime Werte intern.

Hier sind die relevanten Zitate, falls Sie nicht alles lesen möchten:

Und wie speichert SQL Server die Daten intern? Es verwendet 8 Bytes, um einen datetime-Wert zu speichern – die ersten 4 für das Datum und die zweiten 4 für die Uhrzeit. SQL Server kann beide Sätze von 4 Bytes als Ganzzahlen interpretieren.
........
........
SQL Server speichert die zweite Ganzzahl für die Zeit als die Anzahl der Takte nach Mitternacht. Eine Sekunde enthält 300 Ticks, also entspricht ein Tick 3,3 Millisekunden (ms).

seit Time tatsächlich als 4-Byte-Integer gespeichert wird, hat es wirklich kein Format als integraler Bestandteil des Datentyps.

Vielleicht möchten Sie auch diesen Artikel für eine ausführlichere Erklärung mit Codebeispielen lesen.