Salut a tous et merci pour lire ma petite question!

J'ai besoin d'utiliser la fonction dateadd et il parait qu'il me manque quelque chose pour bien comprendre l'utilisation dans divers examples de cette fonction.

Je ne sais pas pourquoi cette fonction ne marche pas

Voila le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
DECLARE @datetime datetime 
SET @datetime= '2007-01-01 13:10:10.1111111'
SELECT 'year', DATEADD(year,1,@datetime)
UNION ALL
SELECT 'quarter',DATEADD(quarter,1,@datetime)
UNION ALL
SELECT 'month',DATEADD(month,1,@datetime)
UNION ALL
SELECT 'dayofyear',DATEADD(dayofyear,1,@datetime)
UNION ALL
SELECT 'day',DATEADD(day,1,@datetime)
UNION ALL
SELECT 'week',DATEADD(week,1,@datetime)
UNION ALL
SELECT 'weekday',DATEADD(weekday,1,@datetime)
UNION ALL
SELECT 'hour',DATEADD(hour,1,@datetime)
UNION ALL
SELECT 'minute',DATEADD(minute,1,@datetime)
UNION ALL
SELECT 'second',DATEADD(second,1,@datetime)
UNION ALL
SELECT 'millisecond',DATEADD(millisecond,1,@datetime)
Erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Msg 241, Level 16, State 1, Line 2
Conversion failed when converting datetime from character string.
Resultat voulu par le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Year         2008-01-01 13:10:10.1111111
quarter      2007-04-01 13:10:10.1111111
month        2007-02-01 13:10:10.1111111
dayofyear    2007-01-02 13:10:10.1111111
day          2007-01-02 13:10:10.1111111
week         2007-01-08 13:10:10.1111111
weekday      2007-01-02 13:10:10.1111111
hour         2007-01-01 14:10:10.1111111
minute       2007-01-01 13:11:10.1111111
second       2007-01-01 13:10:11.1111111
millisecond  2007-01-01 13:10:10.1121111
Aussi l'example suivante comporte la meme erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
DECLARE @datetime2 datetime;
SET @datetime2 = '2007-01-01 01:01:01.1111111';
--Statement                                 Result   
-------------------------------------------------------------------                                   
SELECT DATEADD(quarter,4,@datetime2);     --2008-01-01 01:01:01.110
SELECT DATEADD(month,13,@datetime2);      --2008-02-01 01:01:01.110
SELECT DATEADD(dayofyear,365,@datetime2); --2008-01-01 01:01:01.110
SELECT DATEADD(day,365,@datetime2);       --2008-01-01 01:01:01.110
SELECT DATEADD(week,5,@datetime2);        --2007-02-05 01:01:01.110
SELECT DATEADD(weekday,31,@datetime2);    --2007-02-01 01:01:01.110
SELECT DATEADD(hour,23,@datetime2);       --2007-01-02 00:01:01.110
SELECT DATEADD(minute,59,@datetime2);     --2007-01-01 02:00:01.110
SELECT DATEADD(second,59,@datetime2);     --2007-01-01 01:02:00.110
SELECT DATEADD(millisecond,1,@datetime2); --2007-01-01 01:01:01.110