Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 10825|Odpověď: 0

[Zdroj] Praktické SQL tvrzení: odhad data

[Kopírovat odkaz]
Zveřejněno 26.11.2014 15:53:01 | | |

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)






Předchozí:Problém s využitím indexu, když sqlserver zpracovává například '%keyword%'
Další:ORACLE 11g Nové funkce – Umožňuje DDL zámkům čekat na DML zámky
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com