Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Convertendo um valor numérico em data e hora


Sua data é na verdade um valor numérico (float ou integer), armazenado em uma coluna char. Então, você precisa convertê-lo para um valor numérico (neste caso, para float ) primeira curtida:
select convert(datetime, CONVERT(float,date_column))

Um valor de 41547.5 vai resultar em:
`2013-10-02 12:00:00`

O argumento de estilo, no seu caso 6 só é necessário ao converter de ou para char-types. Neste caso não é necessário e será ignorado.

NB:O valor float é o número de dias desde 1900-01-01 .

por exemplo. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; o mesmo que select dateadd(day,9.0,'1900-01-01') gostaria.

A parte decimal do número também equivale a dias; então 0.5 é meio dia / 12 horas.

por exemplo. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Aqui nossa comparação com dateadd não faz sentido, pois lida apenas com inteiros em vez de floats).