47 votes

Convertir int en DATETIME (SQL)

J'essaie de convertir une date en datetime mais je reçois des erreurs. Le type de données à partir duquel 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 :

Erreur de débordement arithmétique convertissant l'expression en type de données datetime.

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

66voto

SQLMenace Points 68670

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

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

en

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 à 1900-01-01..vous dépassez la limite

convertir d'abord en caractères

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

4voto

rchacko Points 51

Essayez ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X