Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 10825|Svar: 0

[Kilde] Praktisk SQL-sætning: datoestimering

[Kopier link]
Opslået på 26/11/2014 15.53.01 | | |

OPLYS @dt dato
SÆT @dt=GETDATE()

DEKLARER @number int
SÆT @number=3

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

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


--2. Den første eller sidste dag i det kvartal, hvor den angivne dato er placeret
--A. Første dag i kvartalet
SELECT Co nVERT(datetime,
Co nVERT(karakter(8),
DATEADD(Mo nth,
DATEPART(Kvartal, @dt)*3-Mo nth(@dt)-2,
@dt),
120)+ '1 ')

--B. Sidste dag i kvartalet (CASE-dom)
SELECT Co nVERT(datetime,
Co nVERT(karakter(8),
DATEADD(Mo nth,
DATEPART(Kvartal, @dt)*3-Mo n.(@dt),
@dt),
120)
+TILFÆLDE NÅR DATEPART(Quarter,@dt) i(1,4)
SÅ '31 'ELSE '30' SLUT)

--C. Sidste dag i kvartalet (direkte push-algoritme)
VÆLG DATOADD(Dag,-1,
Co nVERT(karakter(8),
DATEADD(Mo nth,
1+DATEPART(Quarter,@dt)*3-Mo nth(@dt),
@dt),
120)+ '1 ')


--3. Den første eller sidste dag i den måned, hvor den angivne dato er placeret
--A. Den første dag i måneden
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')

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

--C. Sidste dag i måneden (nem at bruge forkert metode)
SELECT DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt))


--4. Enhver ugedag, hvor den angivne dato er placeret
SELECT DATEADD(Dag,@number-DATEPART(Hverdag,@dt),@dt)


--5. Enhver ugedag, hvor den angivne dato er placeret
--A.  Søndag som ugens første dag
SELECT DATEADD(Dag,@number-(DATEPART(Hverdag,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Mandag er ugens første dag
SELECT DATEADD(Dag,@number-(DATEPART(Hverdag,@dt)+@@DATEFIRST-2)%7-1,@dt)






Tidligere:Indexudnyttelsesproblem, når sqlserver håndterer som '%keyword%'
Næste:ORACLE 11g Nye funktioner - Tillader DDL-låse at vente på DML-låse
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com