|
OPLYS @dt dato SÆT @dt=GETDATE() DEKLARER @number int SÆT @number=3 --1. Angiv datoen for årets første eller sidste dag --A. Årets første dag SELECT Co nVERT(char(5),@dt,120)+ '1-1 ' --B. Årets sidste dag SELECT Co nVERT(char(5),@dt,120)+ '12-31 ' --2. Den første eller sidste dag i det kvartal, hvor den angivne dato er placeret --A. Første dag i kvartalet SELECT Co nVERT(datetime, Co nVERT(karakter(8), DATEADD(Mo nth, DATEPART(Kvartal, @dt)*3-Mo nth(@dt)-2, @dt), 120)+ '1 ')
--B. Sidste dag i kvartalet (CASE-dom) SELECT Co nVERT(datetime, Co nVERT(karakter(8), DATEADD(Mo nth, DATEPART(Kvartal, @dt)*3-Mo n.(@dt), @dt), 120) +TILFÆLDE NÅR DATEPART(Quarter,@dt) i(1,4) SÅ '31 'ELSE '30' SLUT) --C. Sidste dag i kvartalet (direkte push-algoritme) VÆLG DATOADD(Dag,-1, Co nVERT(karakter(8), DATEADD(Mo nth, 1+DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. Den første eller sidste dag i den måned, hvor den angivne dato er placeret --A. Den første dag i måneden SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Den sidste dag i måneden SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Sidste dag i måneden (nem at bruge forkert metode) SELECT DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt)) --4. Enhver ugedag, hvor den angivne dato er placeret SELECT DATEADD(Dag,@number-DATEPART(Hverdag,@dt),@dt)
--5. Enhver ugedag, hvor den angivne dato er placeret --A. Søndag som ugens første dag SELECT DATEADD(Dag,@number-(DATEPART(Hverdag,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Mandag er ugens første dag SELECT DATEADD(Dag,@number-(DATEPART(Hverdag,@dt)+@@DATEFIRST-2)%7-1,@dt)
|