|
DEKLAREERI @dt kuupäeva SEADISTA @dt=GETDATE() DEKLAREERI @number int KOMPLEKT @number=3 --1. Määra aasta esimese või viimase päeva kuupäev --A. Aasta esimene päev SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. Aasta viimane päev SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Kvartali esimene või viimane päev, kus määratud kuupäev asub, --A. Kvartali esimene päev SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(veerand,@dt)*3-kuud nth(@dt)-2, @dt), 120)+ '1 ')
--B. Kvartali viimane päev (JUHTUMI otsus) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(kvartal,@dt)*3-kuud nth(@dt), @dt), 120) +JUHTUM, KUI DATEPART(Quarter,@dt) in(1,4) SIIS '31 'ELSE '30' LÕPP) --C. Kvartali viimane päev (otsene tõuge algoritm) VALI DATEADD(Päev,-1, Co nVERT(char(8), DATEADD(Mo nth, 1+DATEPART(veerand,@dt)*3-kuud nth(@dt), @dt), 120)+ '1 ') --3. Kuu esimene või viimane päev, mil määratud kuupäev asub, --A. Kuu esimene päev SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')
--B. Kuu viimane päev SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1') --C. Kuu viimane päev (lihtne kasutada, vale meetod) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Iga nädalapäev, mil määratud kuupäev asub SELECT DATEADD(Päev,@number-DATEPART(Tööpäev,@dt),@dt)
--5. Iga nädalapäev, mil määratud kuupäev asub --A. Pühapäev on nädala esimene päev SELECT DATEADD(Päev,@number-(DATEPART(Tööpäev,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Esmaspäev on nädala esimene päev SELECT DATEADD(Päev,@number-(DATEPART(Tööpäev,@dt)+@@DATEFIRST-2)%7-1,@dt)
|