|
VYHLÁSIT @dt DATUM SET @dt=GETDATE() DEKLARUJTE @number INT SADA @number=3 --1. Uveďte datum prvního nebo posledního dne roku --A. První den v roce SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. Poslední den roku SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. První nebo poslední den čtvrtletí, ve kterém se dané datum nachází --A. První den čtvrtletí SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Ani něco, DATEPART(čtvrtletí,@dt)*3-měsíce nth(@dt)-2, @dt), 120)+ '1 ')
--B. Poslední den čtvrtletí (rozsudek PŘÍPAD) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Ani něco, DATEPART(čtvrtletí, @dt)*3-měsíční nth(@dt), @dt), 120) +PŘÍPAD, KDYŽ DATEPART(Čtvrtletí,@dt) in(1,4) PAK '31 'DALŠÍ '30' KONEC) --C. Poslední den čtvrtletí (algoritmus přímého pushu) VYBERTE DATEADD(Den,-1, Co nVERT(char(8), DATEADD(Ani něco, 1+DATEPART(Čtvrtina,@dt)*3-Měsíc nth(@dt), @dt), 120)+ '1 ') --3. První nebo poslední den měsíce, ve kterém se dané datum nachází --A. První den v měsíci SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Poslední den v měsíci SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Poslední den v měsíci (snadno použitelná špatná metoda) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Jakýkoli den v týdnu, kdy se dané datum nachází VYBERTE DATEADD(Den,@number-DATEPART(Všední den,@dt,@dt)
--5. Každý den v týdnu, kdy se dané datum nachází --A. Neděle jako první den v týdnu VYBERTE DATEADD(Den,@number-(DATEPART(Všední den,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Pondělí je první den v týdnu VYBERTE DATEADD(Den,@number-(DATEPART(Všední den,@dt)+@@DATEFIRST-2)%7-1,@dt)
|