sql >> Base de Datos >  >> RDS >> Sqlserver

Convertir un valor numérico a fecha y hora

Su fecha es en realidad un valor numérico (flotante o entero), almacenado en una columna de caracteres. Entonces, necesitas convertirlo a un valor numérico (en este caso, a float ) primero, como:

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

Un valor de 41547.5 dará como resultado:

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

El argumento de estilo, en tu caso 6 solo es necesario cuando se convierte desde o hacia tipos char. En este caso no es necesario y será ignorado.

NB:El valor flotante es el número de días desde 1900-01-01 .

p.ej. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; lo mismo que select dateadd(day,9.0,'1900-01-01') lo haría.

La parte decimal del número también equivale a días; entonces 0.5 es medio día / 12 horas.

p.ej. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Aquí nuestra comparación con dateadd no tiene sentido, ya que solo trata con números enteros en lugar de flotantes).