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

Konvertieren eines numerischen Werts in Datumszeit

Ihr Datum ist eigentlich ein numerischer Wert (Float oder Integer), der in einer char-Spalte gespeichert ist. Sie müssen ihn also in einen numerischen Wert umwandeln (in diesem Fall in float ) zuerst wie:

select convert(datetime, CONVERT(float,date_column))

Ein Wert von 41547.5 ergibt:

`2013-10-02 12:00:00`

Das Stilargument, in Ihrem Fall 6 ist nur notwendig, wenn von oder zu char-Typen konvertiert wird. In diesem Fall wird es nicht benötigt und wird ignoriert.

Hinweis:Der Float-Wert ist die Anzahl der Tage seit 1900-01-01 .

z.B. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; dasselbe wie select dateadd(day,9.0,'1900-01-01') würde.

Der Dezimalteil der Zahl entspricht ebenfalls Tagen; also 0.5 ist ein halber Tag / 12 Stunden.

z.B. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Hier macht unser Vergleich mit dateadd keinen Sinn, da es sich hier nur um Integer und nicht um Floats handelt).