Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Conversion d'une valeur numérique en date/heure

Votre date est en fait une valeur numérique (float ou entier), stockée dans une colonne char. Donc, vous devez le convertir en une valeur numérique (dans ce cas, en float ) d'abord, comme :

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

Une valeur de 41547.5 entraînera :

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

L'argument de style, dans votre cas 6 n'est nécessaire que lors de la conversion depuis ou vers des types char. Dans ce cas, il n'est pas nécessaire et sera ignoré.

NB :La valeur flottante est le nombre de jours depuis le 1900-01-01 .

par exemple. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; identique à select dateadd(day,9.0,'1900-01-01') le ferait.

La partie décimale du nombre équivaut également à des jours ; donc 0.5 est une demi-journée / 12 heures.

par exemple. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Ici, notre comparaison avec dateadd n'a pas de sens, car cela ne traite que des entiers plutôt que des flottants).