Ved hjelp av denne guiden lærer du hvordan du beregner forskjellen mellom to datoer ved å bruke SQL Server Datediff () -funksjonen.
Grunnleggende bruk
Datediff -funksjonen lar deg passere start- og sluttdatoverdier. Den beregner og returnerer forskjellen mellom dem i år, måneder, uker, dager osv.
Funksjonssyntaksen er som:
datediff (enhet, start_date, end_date);Funksjonsargumenter
Funksjonen tre hovedargumenter uttrykt som:
1. Enhet - representerer enhetene som funksjonen vil rapportere forskjellen mellom den spesifiserte start- og sluttdatoen. SQL Server støtter ikke å passere verdien av enhetsparameteren som en variabel av en streng som 'år';
Tabellen nedenfor viser enheten og forkortelsen du kan bruke i enhetsparameteren.
enhetsforkortelse2. start_date & end_date - definerer de to datoene hvis forskjell må beregnes. Verdien av begge argumenter kan være en bokstavelig streng eller et uttrykk som kan løse en verdi av typen: dato, datetime, datetim2, dateTimeOffset, tid, smalldateTime.
For å unngå tvetydighet, bør du vurdere å bruke fire sifre for å representere et år.
Funksjonsretur
Datediff -funksjonen returnerer en INT -type, som representerer start- og sluttdatoforskjellen. Noen ganger kan forskjellen være utenfor rekkevidde for størrelsen på et heltall. Hvis det skjer, vil den daterte funksjonen returnere en feil. Vurder å bruke datediff_big -funksjonen for et slikt scenario.
SQL Server datediff () eksempler
Følgende eksempler er nyttige for å illustrere hvordan du skal jobbe med den daterte () -funksjonen.
Eksempel 1:
Tenk på eksemplet som er vist nedenfor:
Velg Datediff (måned, '1998-09-06', '2022-06-06') som forskjell;Spørringen ovenfor skal returnere den totale månedens forskjell mellom start- og sluttdato som:
forskjellEksempel 2:
Anta at du vil beregne hvor mange sekunder som er det på en dag? Du kan bruke datediff -funksjonen som vist:
Velg Datediff (andre, '2022-01-01', '2022-01-02') som forskjell;Eksemplet over skal returnere antall sekunder på en dag som:
-----------Eksempel 3:
Du kan støte på et scenario der forskjellen mellom to datoer er stor enn det maksimale for en heltallstype. For eksempel forskjellen i nanosekunder på en dag.
Tenk på eksemplet på spørringen nedenfor:
Velg Datediff (Nanosekund, '2022-01-01', '2022-01-02') som forskjell;Hvis vi kjører spørringen ovenfor, returnerer SQL Server en overløpsfeil som:
Datediff -funksjonen resulterte i et overløp. Antall dataparter som skiller to dato/klokkeslett forekomster er for stort. Prøv å bruke datediff med en mindre presis datapart.For å løse dette, bruk funksjonen datediff_big som:
Velg Datediff_Big (Nanosecond, '2022-01-01', '2022-01-02') som forskjell;I dette eksemplet returnerer spørringen antall nanosekunder på en dag som:
forskjellEksempel 4:
Eksemplet nedenfor viser deg hvordan du beregner forskjellen i timer mellom 1998 og 2021.
Velg Datediff (time, '1998-01-01', '2021-01-01');Den resulterende verdien er som:
-----------Eksempel 5:
Siden returverdien til den daterte funksjonen er et heltall, kan vi kaste den til en streng, slik at du kan utføre strengkonturasjon.
For eksempel:
Velg rollebesetning (datediff (time, '1998-01-01', '2021-01-01') som varchar (20)) + 'timer';Eksemplet over kaster verdien fra en heltallsstreng og legger til en streng sammenkobling.
Eksempelets resultat er som:
--------------------------Avsluttende ord
Vi håper du likte og lærte hvordan du beregner forskjellene mellom to datoer ved bruk av forskjellige enheter i SQL Server. Eksemplene gitt i denne guiden kan hjelpe deg med å manipulere dato- og tidsdata mer effektivt.
Takk for at du leste!