Adding a value to a 'datetime' column caused overflow.
Bonjour,
Je ne comprends pas pourquoi j'ai cette erreur.
Adding a value to a 'datetime' column caused overflow.
Je l'obtiens lorsque j'exécute la première requête (en décommentant la ligne avec DATEADD), alors que le lot de deux instructions s'exécutent parfaitement.
J'ai des '9999-12-31' dans ODS_DAT_FIN_VAL mais la sous-requête ne ramène jamais ces lignes là.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| SELECT
t1.UC03_C_UC UC03_C_UC
,t1.UC03_D_COT UC03_D_COT
,t1.UC03_M_COT_1 UC03_M_COT_1
,t1.UC03_NO_GRP_COTA UC03_NO_GRP_COTA
,t2.ODS_DAT_FIN_VAL ODS_DAT_DEB_VAL
-- ,DATEADD(dd, 1, t2.ODS_DAT_FIN_VAL) ODS_DAT_DEB_VAL
,t1.ODS_DAT_FIN_VAL ODS_DAT_FIN_VAL
,'Y' SWI_MDF
into #tmp
FROM #uctb03 t1
INNER JOIN (
SELECT t1.*
--into #tmp
FROM #uctb03 t1
LEFT JOIN #uctb03 t2
ON t1.UC03_C_UC = t2.UC03_C_UC
AND t1.UC03_NO_GRP_COTA = t2.UC03_NO_GRP_COTA
AND t1.UC03_D_COT = t2.UC03_D_COT
AND t2.ODS_DAT_FIN_VAL = '99991231'
WHERE t2.UC03_C_UC is null
) t2
ON t1.UC03_C_UC = t2.UC03_C_UC
AND t1.UC03_NO_GRP_COTA = t2.UC03_NO_GRP_COTA
AND t1.UC03_D_COT > t2.UC03_D_COT
AND t2.ODS_DAT_FIN_VAL BETWEEN DATEADD(dd, -1, t1.ODS_DAT_DEB_VAL) AND DATEADD(dd, -1, t1.ODS_DAT_FIN_VAL)
update #tmp
set ODS_DAT_DEB_VAL = dateadd(dd,1,ODS_DAT_DEB_VAL) |
Je ne comprends pas.
Si cette erreur est produite lors de l'exécution dans ce cas là la sous requête doit ramener des 9999-12-31, ce qui n'est pas le cas.
Si cette erreur est produite lors de la compilation, elle doit être également provoquée lorsqu'on demande le plan d'exécution, ce n'est pas ne cas non plus. Le plan d'exécution s'affiche bel et bien.
Alors, qqun a des explications? Que faire?