|
VYHLÁSTE @dt dátum SET @dt=GETDATE() DEKLARUJ @number INT SET @number=3 --1. Uveďte dátum prvého alebo posledného dňa v roku --A. Prvý deň v roku SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. Posledný deň roka SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Prvý alebo posledný deň štvrťroka, v ktorom sa určený dátum nachádza --A. Prvý deň štvrťroka SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Ani neďalej, DATEPART(Štvrťrok,@dt)*3-Mesiac nth(@dt)-2, @dt), 120)+ '1 ')
--B. Posledný deň štvrťroka (ROZSUDOK PRÍPADU) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Ani neďalej, DATEPART(Quarter,@dt)*3-Mesiac nth(@dt), @dt), 120) +PRÍPAD, KEĎ DATEPART(Štvrťrok,@dt) in(1,4) POTOM '31 'ĎALŠÍ '30' KONIEC) --C. Posledný deň štvrťroka (algoritmus priameho pushu) VYBERTE DATEADD(Deň,-1, Co nVERT(char(8), DATEADD(Ani neďalej, 1+DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. Prvý alebo posledný deň mesiaca, v ktorom sa uvedený dátum nachádza --A. Prvý deň v mesiaci SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')
--B. Posledný deň v mesiaci SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Posledný deň v mesiaci (ľahko použiteľná nesprávna metóda) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Ktorýkoľvek deň v týždni, v ktorom sa určený dátum nachádza VYBERTE DATEADD(Deň,@number-DATEPART(Pracovný deň,@dt,@dt)
--5. Akýkoľvek deň v týždni, v ktorom sa uvedený dátum nachádza --A. Nedeľa ako prvý deň v týždni VYBERTE DATEADD(Deň,@number-(DATEPART(Pracovný deň,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Pondelok je prvý deň v týždni VYBRAŤ DATEADD(Deň,@number-(DATEPART(Pracovný deň,@dt)+@@DATEFIRST-2)%7-1,@dt)
|