Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 10825|Svar: 0

[Källa] Praktisk SQL-sats: datumuppskattning

[Kopiera länk]
Publicerad på 2014-11-26 15:53:01 | | |

DEKLARERA @dt datum
SET @dt=GETDATE()

DEKLARERA @number INT
SET @number=3

--1. Ange datumet för årets första eller sista dag
--A. Årets första dag
SELECT Co nVERT(char(5),@dt,120)+ '1-1 '

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


--2. Den första eller sista dagen i kvartalet då det angivna datumet är placerat
--A. Första dagen i kvartalet
SELECT Co nVERT (datetime,
Co nVERT(char(8),
DATEADD(Mån,
DATEPART(Quarter,@dt)*3-Mo n:h(@dt)-2,
@dt),
120)+ '1 ')

--B. Sista dagen i kvartalet (CASE-dom)
SELECT Co nVERT (datetime,
Co nVERT(char(8),
DATEADD(Mån,
DATEPART(Kvartal, @dt)*3 månader n:te(@dt),
@dt),
120)
+FALL NÄR DATEPART(Quarter,@dt) in(1,4)
SEDAN '31 'ANNARS '30' SLUT)

--C. Sista dagen i kvartalet (direktpush-algoritm)
VÄLJ DATUMADD(Dag,-1,
Co nVERT(char(8),
DATEADD(Mån,
1+DATEPART(Quarter,@dt)*3-Mo n:te(@dt),
@dt),
120)+ '1 ')


--3. Den första eller sista dagen i månaden då det angivna datumet är placerat
--A. Första dagen i månaden
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')

--B. Månadens sista dag
SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ')

--C. Sista dagen i månaden (lätt att använda fel metod)
VÄLJ DATEADD(Mo nth,1,DATEADD(Dag,-DAG(@dt),@dt))


--4. Vilken veckodag som helst då det angivna datumet är placerat
VÄLJ DATUMADD(Dag,@number-DATUMDEL(Vardag,@dt),@dt)


--5. Vilken veckodag som helst då det angivna datumet är placerat
--A.  Söndag som veckans första dag
VÄLJ DATEADD(Dag,@number-(DATEPART(Vardag,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Måndag är veckans första dag
VÄLJ DATEADD(Dag,@number-(DATEPART(Vardag,@dt)+@@DATEFIRST-2)%7-1,@dt)






Föregående:Problem med indexanvändning när sqlserver hanterar som '%keyword%'
Nästa:ORACLE 11g Nya funktioner – Tillåter DDL-lås att vänta på DML-lås
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com