Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 10825|Odgovoriti: 0

[Vir] Praktična SQL izjava: ocenjevanje datuma

[Kopiraj povezavo]
Objavljeno na 26. 11. 2014 15:53:01 | | |

RAZGLASITE @dt datum
NASTAVI @dt=GETDATE()

DEKLARIRAJ @number INT
SET @number=3

--1. Določite datum prvega ali zadnjega dne v letu
--A. Prvi dan v letu
SELECT Co nVERT(char(5),@dt,120)+ '1-1'

--B. Zadnji dan v letu
SELECT Co nVERT(char(5),@dt,120)+ '12-31'


--2. Prvi ali zadnji dan četrtletja, v katerem je določen datum
--A. Prvi dan četrtletja
SELECT Co nVERT(datetime),
Co nVERT(char(8),
DATEADD(Več milijonov,
DATEPART(četrtinka,@dt)*3-mesec nth(@dt)-2,
@dt),
120)+ '1 ')

--B. Zadnji dan četrtletja (sodba ZADEVE)
SELECT Co nVERT(datetime),
Co nVERT(char(8),
DATEADD(Več milijonov,
DATEPART(četrtinka,@dt)*3-mesec nth(@dt),
@dt),
120)
+PRIMER, KO DATEPART(Četrtletje,@dt) v(1,4)
NATO '31 'ELSE '30' KONEC)

--C. Zadnji dan četrtletja (algoritem direktnega potiska)
IZBERI DATEADD(Dan,-1,
Co nVERT(char(8),
DATEADD(Več milijonov,
1+DATEPART(Četrtina,@dt)*3-Mesec nth(@dt),
@dt),
120)+ '1 ')


--3. Prvi ali zadnji dan v mesecu, v katerem je določen datum
--A. Prvi dan v mesecu
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')

--B. Zadnji dan v mesecu
SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ')

--C. Zadnji dan v mesecu (enostavna za uporabo napačna metoda)
SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt))


--4. Kateri koli dan v tednu, na katerem je določen datum
IZBERI DATEADD(Dan,@number-DATEPART(Delovni dan,@dt,@dt)


--5. Kateri koli dan v tednu, na katerem je določen datum
--A.  Nedelja kot prvi dan v tednu
IZBERI DATEADD(Dan,@number-(DATEPART(Delovni dan,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Ponedeljek je prvi dan v tednu
IZBERI DATEADD(Dan,@number-(DATEPART(Delovni dan,@dt)+@@DATEFIRST-2)%7-1,@dt)






Prejšnji:Problem izkoriščenosti indeksa, ko sqlserver obravnava kot '%keyword%'
Naslednji:ORACLE 11g Nove funkcije - Omogoča, da DDL ključavnice počakajo na DML ključavnice
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com