|
DEKLARERA @dt datum SET @dt=GETDATE() DEKLARERA @number INT SET @number=3 --1. Ange datumet för årets första eller sista dag --A. Årets första dag SELECT Co nVERT(char(5),@dt,120)+ '1-1 ' --B. Årets sista dag SELECT Co nVERT(char(5),@dt,120)+ '12-31 ' --2. Den första eller sista dagen i kvartalet då det angivna datumet är placerat --A. Första dagen i kvartalet SELECT Co nVERT (datetime, Co nVERT(char(8), DATEADD(Mån, DATEPART(Quarter,@dt)*3-Mo n:h(@dt)-2, @dt), 120)+ '1 ')
--B. Sista dagen i kvartalet (CASE-dom) SELECT Co nVERT (datetime, Co nVERT(char(8), DATEADD(Mån, DATEPART(Kvartal, @dt)*3 månader n:te(@dt), @dt), 120) +FALL NÄR DATEPART(Quarter,@dt) in(1,4) SEDAN '31 'ANNARS '30' SLUT) --C. Sista dagen i kvartalet (direktpush-algoritm) VÄLJ DATUMADD(Dag,-1, Co nVERT(char(8), DATEADD(Mån, 1+DATEPART(Quarter,@dt)*3-Mo n:te(@dt), @dt), 120)+ '1 ') --3. Den första eller sista dagen i månaden då det angivna datumet är placerat --A. Första dagen i månaden SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Månadens sista dag SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Sista dagen i månaden (lätt att använda fel metod) VÄLJ DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt)) --4. Vilken veckodag som helst då det angivna datumet är placerat VÄLJ DATUMADD(Dag,@number-DATUMDEL(Vardag,@dt),@dt)
--5. Vilken veckodag som helst då det angivna datumet är placerat --A. Söndag som veckans första dag VÄLJ DATEADD(Dag,@number-(DATEPART(Vardag,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Måndag är veckans första dag VÄLJ DATEADD(Dag,@number-(DATEPART(Vardag,@dt)+@@DATEFIRST-2)%7-1,@dt)
|