Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Conversione di un valore numerico in data ora

La tua data è in realtà un valore numerico (float o intero), memorizzato in una colonna di caratteri. Quindi, devi convertirlo in un valore numerico (in questo caso, in float ) prima, come:

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

Un valore di 41547.5 risulterà in:

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

L'argomento di stile, nel tuo caso 6 è necessario solo durante la conversione da o in tipi char. In questo caso non è necessario e verrà ignorato.

NB:Il valore float è il numero di giorni trascorsi da 1900-01-01 .

per esempio. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; lo stesso di select dateadd(day,9.0,'1900-01-01') lo farebbe.

Anche la parte decimale del numero corrisponde ai giorni; quindi 0.5 è mezza giornata / 12 ore.

per esempio. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Qui il nostro confronto con dateadd non ha senso, dal momento che si tratta solo di numeri interi anziché di float).