|
DECLARĂ @dt ora datei SET @dt=GETDATE() DECLARE @number int SET @number=3 --1. Specifică data primei sau ultimei zile a anului --A. Prima zi a anului SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. Ultima zi a anului SELECT Co nVERT(char(5),@dt,120)+ '12-31' ' --2. Prima sau ultima zi a trimestrului în care se află data specificată --A. Prima zi a trimestrului SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD (Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2, @dt), 120)+ '1 ')
--B. Ultima zi a trimestrului (hotărârea cazului) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD (Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120) +CAZ CÂND DATEPART(Quarter,@dt) în(1,4) APOI '31 'ALTFEL '30' SFÂRȘIT) --C. Ultima zi a trimestrului (algoritm de împingere directă) SELECTEAZĂ DATEADA(Ziua,-1, Co nVERT(char(8), DATEADD (Mo nth, 1+DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. Prima sau ultima zi a lunii în care se află data specificată --A. Prima zi a lunii SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Ultima zi a lunii SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Ultima zi a lunii (metodă greșită ușor de folosit) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Orice zi a săptămânii în care se află data specificată SELECT DATEADD(Zi,@number-DATAPARTE(Zi lucrătoare,@dt),@dt)
--5. Orice zi a săptămânii în care se află data specificată --A. Duminica ca prima zi a săptămânii SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Luni este prima zi a săptămânii SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
|