|
OPPGI @dt dato og tid SETT @dt=GETDATE() ERKLÆR @number int SETT @number=3 --1. Spesifiser datoen for årets første eller siste dag --A. Årets første dag SELECT Co nVERT(char(5),@dt,120)+ '1-1 ' --B. Årets siste dag SELECT Co nVERT(char(5),@dt,120)+ '12-31 ' --2. Den første eller siste dagen i kvartalet hvor den angitte datoen er plassert --A. Første dag i kvartalet SELECT Co nVERT(datetime, Co nVERT(karakter(8), DATEADD (Mo nth, DATEPART(Kvartal, @dt)*3 måneder nth (@dt)-2, @dt), 120)+ '1 ')
--B. Siste dag i kvartalet (SAKSDOM) SELECT Co nVERT(datetime, Co nVERT(karakter(8), DATEADD (Mo nth, DATEPART(Kvartal, @dt)*3 måneder nth(@dt), @dt), 120) +TILFELLE NÅR DATEPART(Quarter,@dt) i(1,4) SÅ '31 'ELSE '30' SLUTT) --C. Siste dag i kvartalet (direkte push-algoritme) VELG DATOADD(Dag,-1, Co nVERT(karakter(8), DATEADD (Mo nth, 1+DATEPART(Quarter,@dt)*3-MoM n.(@dt), @dt), 120)+ '1 ') --3. Den første eller siste dagen i måneden hvor den angitte datoen er plassert --A. Den første dagen i måneden SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Den siste dagen i måneden SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Siste dag i måneden (lett å bruke, feil metode) VELG DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt)) --4. Hvilken som helst ukedag hvor den angitte datoen er lokalisert VELG DATOADD(Dag,@number-DATODEL(Ukedag,@dt),@dt)
--5. Hvilken som helst ukedag hvor den angitte datoen er lokalisert --A. Søndag som første dag i uken VELG DATEADD(Dag,@number-(DATEPART(Ukedag,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Mandag er den første dagen i uken VELG DATEADD(Dag,@number-(DATEPART(Ukedag,@dt)+@@DATEFIRST-2)%7-1,@dt)
|