web-dev-qa-db-fra.com

Convertir INT en DATETIME (SQL)

J'essaie de convertir une date en date/heure mais j'obtiens des erreurs. Le type de données que je convertis est (float, null) et j'aimerais le convertir en DATETIME.

La première ligne de ce code fonctionne bien, mais je reçois cette erreur sur la deuxième ligne:

Arithmetic overflow error converting expression to data type datetime.


CAST(CAST( rnwl_efctv_dt AS INT) AS char(8)),
CAST(CAST( rnwl_efctv_dt AS INT) AS DATETIME),
30
Daniel

vous devez d'abord convertir en caractère car la conversion en int ajoute ces jours au 1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt ))

voici quelques exemples

select CONVERT (datetime,5)

1900-01-06 00: 00: 00.000

select CONVERT (datetime,20100101)

explose, car vous ne pouvez pas ajouter 20100101 jours au 1900-01-01 ... vous dépassez la limite

convertir en premier

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))
41
SQLMenace

Essaye ça:

select CONVERT(datetime, convert(varchar(10), 20120103))
0
rchacko