|
DECLARE @dt datetime NUSTATYTI @dt=GETDATE() DECLARE @number int NUSTATYTI @number=3 --1. Nurodykite pirmos arba paskutinės metų dienos datą --A. Pirmoji metų diena SELECT Co nVERT(char(5),@dt,120)+ '1-1 ' --B. Paskutinė metų diena SELECT Co nVERT(char(5),@dt,120)+ '12-31 ' --2. Pirmoji arba paskutinė ketvirčio, kuriame yra nurodyta data, diena --A. Pirmoji ketvirčio diena SELECT Co nVERT(datetime, Co nVERT(simbolis(8), DATEADD(Mo nth, DATEPART(Ketvirtis,@dt)*3-Mėn n-tas(@dt)-2, @dt), 120)+ '1 ')
--B. Paskutinė ketvirčio diena (BYLOS sprendimas) SELECT Co nVERT(datetime, Co nVERT(simbolis(8), DATEADD(Mo nth, DATEPART(Ketvirtis,@dt)*3-Mėn n-tas(@dt), @dt), 120) +ATVEJIS, KAI DATEPART(Ketvirtis,@dt) į(1,4) TADA "31" "KITAIP "30" PABAIGA) --C. Paskutinė ketvirčio diena (tiesioginio stūmimo algoritmas) SELECT DATEADD(Diena,-1, Co nVERT(simbolis(8), DATEADD(Mo nth, 1+DATEPART(Ketvirtis,@dt)*3-Mėn n-tas(@dt), @dt), 120)+ '1 ') --3.Pirmoji arba paskutinė mėnesio, kuriame yra nurodyta data, diena --A. Pirmoji mėnesio diena SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Paskutinė mėnesio diena SELECT DATEADD(Diena,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Paskutinė mėnesio diena (lengva naudoti neteisingą metodą) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Bet kuri savaitės diena, kurioje yra nurodyta data SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5. Bet kuri savaitės diena, kurioje yra nurodyta data --A. Sekmadienis kaip pirmoji savaitės diena SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Pirmadienis yra pirmoji savaitės diena SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
|