Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 10825|Svare: 0

[Kilde] Praktisk SQL-setning: datoestimering

[Kopier lenke]
Publisert på 26.11.2014 15:53:01 | | |

OPPGI @dt dato og tid
SETT @dt=GETDATE()

ERKLÆR @number int
SETT @number=3

--1. Spesifiser datoen for årets første eller siste dag
--A. Årets første dag
SELECT Co nVERT(char(5),@dt,120)+ '1-1 '

--B. Årets siste dag
SELECT Co nVERT(char(5),@dt,120)+ '12-31 '


--2. Den første eller siste dagen i kvartalet hvor den angitte datoen er plassert
--A. Første dag i kvartalet
SELECT Co nVERT(datetime,
Co nVERT(karakter(8),
DATEADD (Mo nth,
DATEPART(Kvartal, @dt)*3 måneder nth (@dt)-2,
@dt),
120)+ '1 ')

--B. Siste dag i kvartalet (SAKSDOM)
SELECT Co nVERT(datetime,
Co nVERT(karakter(8),
DATEADD (Mo nth,
DATEPART(Kvartal, @dt)*3 måneder nth(@dt),
@dt),
120)
+TILFELLE NÅR DATEPART(Quarter,@dt) i(1,4)
SÅ '31 'ELSE '30' SLUTT)

--C. Siste dag i kvartalet (direkte push-algoritme)
VELG DATOADD(Dag,-1,
Co nVERT(karakter(8),
DATEADD (Mo nth,
1+DATEPART(Quarter,@dt)*3-MoM n.(@dt),
@dt),
120)+ '1 ')


--3. Den første eller siste dagen i måneden hvor den angitte datoen er plassert
--A. Den første dagen i måneden
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')

--B. Den siste dagen i måneden
SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ')

--C. Siste dag i måneden (lett å bruke, feil metode)
VELG DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt))


--4. Hvilken som helst ukedag hvor den angitte datoen er lokalisert
VELG DATOADD(Dag,@number-DATODEL(Ukedag,@dt),@dt)


--5. Hvilken som helst ukedag hvor den angitte datoen er lokalisert
--A.  Søndag som første dag i uken
VELG DATEADD(Dag,@number-(DATEPART(Ukedag,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Mandag er den første dagen i uken
VELG DATEADD(Dag,@number-(DATEPART(Ukedag,@dt)+@@DATEFIRST-2)%7-1,@dt)






Foregående:Indeksutnyttelsesproblem når sqlserver håndterer som '%nøkkelord%'
Neste:ORACLE 11g Nye funksjoner - Lar DDL-låser vente på DML-låser
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com