Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 10825|Odpoveď: 0

[Zdroj] Praktické SQL vyhlásenie: odhad dátumu

[Kopírovať odkaz]
Zverejnené 26. 11. 2014 15:53:01 | | |

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)






Predchádzajúci:Problém s využitím indexu, keď sqlserver spracováva napríklad '%keyword%'
Budúci:ORACLE 11g Nové funkcie - Umožňuje DDL zámkom čakať na DML zámky
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com