|
DÉCLAREZ @dt heure de la date SET @dt=GETDATE() DÉCLARE @number int ENSEMBLE @number=3 --1. Préciser la date du premier ou du dernier jour de l’année --A. Le premier jour de l’année SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. Le dernier jour de l’année SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Le premier ou le dernier jour du trimestre où se trouve la date spécifiée --A. Premier jour du trimestre SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD (Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2, @dt), 120)+ '1 ')
--B. Dernier jour du trimestre (jugement CASE) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD (Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120) +CAS QUAND DATEPART(Quarter,@dt) in(1,4) PUIS '31 'ELSE '30' FIN) --C. Dernier jour du trimestre (algorithme de push direct) SÉLECTIONNEZ DATEADD(Day,-1, Co nVERT(char(8), DATEADD (Mo nth, 1+DATEPART(Quart,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. Le premier ou le dernier jour du mois où se trouve la date spécifiée --A. Le premier jour du mois SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Le dernier jour du mois SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Dernier jour du mois (mauvaise méthode facile à utiliser) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. N’importe quel jour de la semaine où se trouve la date spécifiée SÉLECTIONNER DATEADD (Jour, @number-DATEPART(Jour de la semaine, @dt), @dt)
--5. N’importe quel jour de la semaine où se trouve la date spécifiée --Un. Le dimanche comme premier jour de la semaine SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1) %7,@dt)
--B. Le lundi est le premier jour de la semaine SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2) %7-1,@dt)
|