SQLShack (Norsk)

SQL-datoformat fungerer som DateDiff SQL-funksjon og DateAdd SQL-funksjon brukes ofte av DBA-er, men mange av oss tok oss aldri tid til å forstå disse ekstremt nyttige funksjonene. For profesjonelle som akkurat har kommet i gang med SQL Server, er disse funksjonene noen av de første som blir kjent med. Så forhåpentligvis vil denne artikkelen ha litt for alle på tvers av ferdighetsspekteret.

En av de mest interessante datatypene som støttes i den relasjonelle databaseverdenen, er DateTime. I denne artikkelen skal vi se på å jobbe med datatypetyper i SQL Server. Vi vil forstå det grunnleggende om datatype datatid, og vi vil også se forskjellige eksempler på hvordan du kan spørre dato-tid-feltene ved hjelp av innebygde funksjoner i SQL Server for å manipulere dataene, transformere dato-tidsverdier og i få tilfeller må du utføre regneoperasjoner.

Først, la oss se på noen populære SQL-datoformat og tidsfunksjoner.

Som standard støtter SQL Server språkene iboende. som støttes av Windows-operativsystemet. Avhengig av innstillinger for lokalitet og sortering når du installerer SQL Server, kan visningen av SQL-datoformat være annerledes. Hvilken type data du skal spille av bestemmes basert på innstilling for lokalitet og innstilling av SQL Server.

I SQL Server har datatypen DATE to standard nøytrale språkformater

  1. ÅÅÅMMDD

    Følgende eksempel, HumanResource .Medarbeidertabellen spørres for å se SQL-datoformatet for HireDate-verdiene

    1
    2
    3
    4
    5
    6

    BRUK AdventureWorks2014;
    GO
    VELG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources.Ansatt;
    GO

    Nå, spør HireDate-kolonnen ved hjelp av nøytralt språkformat. I spørringen overfører vi heltall som består av året 2008; måned, 12. og 7. dag.

    1
    2
    3

    VELG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources.Employee
    WHERE HireDate = «20081207»;

    Merk: Det betyr i utgangspunktet at inngangsverdien er numerisk; SQL-motoren konverterer den internt og ender faktisk opp med en tegnverdi. Så det er omgitt av enkle anførselstegn

  2. MM-DD-YYYY (US-Based Format)

    I dette SQL-datoformatet er HireDate-kolonnen mates med verdiene MM-DD-YYYY. Dette er ikke et heltallformat. La oss kjøre det samme spørsmålet med det nye SQL-datoformatet med inngangsverdien ‘12 -07-2008 ’til HireDate-kolonnen. Så la oss kjøre følgende spørsmål og bekrefte utdataene. Utgangen er det samme settet med fem poster.

    1
    2
    3
    4

    VELG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources.Employee
    WHERE HireDate = «12-07-2008»;
    GO

    Merk: De nøytrale språkformatverdiene er implisitte, og SQL Server vil gjøre den nødvendige konverteringen. Ethvert annet SQL-datoformat krever riktig konvertering av operander eller verdier.

Følgende eksempler viser en feilmelding på grunn av feil bruk av SQL-datoformatet.

1
2
3

VELG HireDate, BusinessEntityID, LoginID, JobTitle
FRA HumanResources. Medarbeider
WHERE HireDate = «25-12-2008 «;

Nå konverteres operanden og dens verdier til et standardformat 103. Du kan se her for mer informasjon om CAST- og Convert-funksjonene.Følgende eksempel returnerer alle radene til den ansatte der HireDate 25 -12-2008

La oss nå begynn å ta en titt på noen av datofunksjonene som SQL Server gjør tilgjengelig for oss, og disse datofunksjonene lar oss jobbe med de forskjellige delene av datoene og til og med manipulere noe av funksjonaliteten som vi kan jobbe med når det gjelder datoer.

La oss se på DATEPART SQL-funksjonen. Denne funksjonen returnerer en heltallsverdi fra den angitte datakolonnen

Spørre HireDate-kolonnen for å bare returnere årsdelen av datoen

Følgende eksempel genererer en heltalsutgangskolonne med navnet skal bare returnere årverdiene

1
2
3

VELG DATEPART (YEAR, HireDate) AS
FRA HumanResources.Employee;
GO

Spør om HireDate kolonne for å returnere bare månedsdelen av datoen

Eksemplet nedenfor genererer en kolonne med heltall som heter, og dette skal bare returnere månedsverdiene

1
2

VELG DATO DEL (MÅNED, HireDate) AS
FRA HumanResources.Ansatte;

Spørre HireDate-kolonnen for å bare returnere kvartalsdelen av datoen

Følgende eksempel genererer en kolonne med heltall som heter, og dette skal bare returnere månedsverdiene

1
2
3

VELG DATO DEL (KVARTAL, HireDate) SOM
FRA HumanResources.Ansatte;
GO

Følgende eksempel returnerer salgsdetaljene for den spesifikke dagen i feltet OrderDate. Eksemplet viser også bruken av DATEPART SQL-funksjonen og dens få tilknyttede argumenter.

SELECT-setningen velger DATEPART, som er funksjonsnavnet, og det tar to argumenter innenfor parentesene. For det første datepart-argumentet og det andre datouttrykket.

La oss ta en titt på bruk av DATENAME SQL-funksjonen. Dette ligner på en DATEPART SQL-funksjon, men den returnerer en tegnstreng fra det angitte datofeltet.

Deretter, la oss ta en titt på de deterministiske funksjonene som returnerer dato og klokkeslett som et heltall. Følgende eksempel returnerer heltallverdier fra OrderDate-feltet for de tilsvarende YEAR- og MONTH-funksjonene.

Resultatet er en samlet verdi av TotalSales basert på månedlig salg.

La oss ta en titt på et par andre forskjellige funksjoner. Og denne vi skal se på heter DATEDIFF. DATEDIFF SQL-funksjonen returnerer en signert heltallverdi som lar oss bestemme forløpt tid mellom to datoer.

La oss leke med spørringen for å bruke forskjellige datodeler for å se resultatene.

Følgende eksempel returnerer tidsdelene mellom de to DateTime-feltene. I dette eksemplet beregnes timer, minutter og sekunder mellom DateTime-verdiene ved hjelp av DATEDIFF SQL-funksjon

Hvordan å bruke DATEDIFF SQL-funksjonen i hvor-setningen

Eksemplet nedenfor returnerer alle ansatte som jobber med organisasjonen i mer enn 10 år. Betinget logikk i HireDate-kolonnen sammenlignes med mer enn 120 måneder er nevnt i hvor-klausulen.

1
2
3
4

VELG *
FRA HumanResources.Employee
WHERE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
GO

Slik bruker du DateDiff SQL-funksjonen med en samlet funksjon

Følgende eksempel returnerer antall år mellom den første ansettelsesdatoen og siste ansettelsesdato. I dette tilfellet ser vi etter minimum HireDate og maksimum HireDate-aggregatfunksjon som brukes som inndataparametere for DATEDIFF SQL-funksjon.Med disse verdiene kunne man enkelt finne antall år som eksisterte mellom første gangs leie og siste gangs leie.

1
2

SELECT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FRA HumanResources.Employee;

La oss ta en titt på DATEADD SQL-funksjonen. Funksjonene legger til eller trekker verdien fra den spesifiserte datadelen og returnerer den modifiserte verdien for datadelen.

La oss ta en titt på følgende eksempel. Verdien 1 legges til de forskjellige datadelene og verdien -1 tillegges timedatadelen og -30 legges til den lille datadelen.

I utgangen kan vi se at verdien betjenes på GETDATE () fungerer i henhold til den definerte datadelen.

Merk: DATEADD og DATEDIFF SQL-funksjonen kan brukes i SELECT, WHERE, HAVING, GROUP BY og ORDER BY klausuler.

Datadiff vs Datediff_BIG

Det er alt for nå på denne SQL-datoformatartikkelen …

Wrap Up

Så langt har vi sett veldig viktige SQL-datoformatfunksjoner som DATEPART, DATENAME, YEAR, MONTH, and DAY, med særlig vekt på DATEADD SQL-funksjonen og DATEDIFF SQL-funksjonen. SQL-datoformatfunksjoner i SQL server er veldig kraftige og hjelper virkelig til å levere effektive dataanalyser og rapporter. I noen tilfeller handler det om å justere sorteringsinnstillinger, plasseringsinnstillinger, bare justere inngangsstrømmen for tekstverdi eller korrigere for at datakilden skulle være tilstrekkelig med datoen.

Det anbefales å bruke det nøytrale språkformatet fordi det fungerer bedre i de fleste tilfeller. Til slutt ser vi forskjellen mellom DATEDIFF SQL-funksjon og DATEDIFF_BIG SQL-funksjon. Jeg håper du liker denne artikkelen. Hvis du har spørsmål, er du velkommen til å kommentere nedenfor

  • Forfatter
  • Nylige innlegg
Jeg er en databaseteknolog som har 11+ års rik, praktisk erfaring med databaseteknologier. Jeg er Microsoft Certified Professional og støttet med en grad i Master of Computer Application.
Min spesialitet ligger i å designe & implementering av høy tilgjengelighetsløsninger og plattform-DB-migrering. Teknologiene som for tiden jobber med er SQL Server, PowerShell, Oracle og MongoDB.
Vis alle innlegg av Prashanth Jayaram

Siste innlegg av Prashanth Jayaram (se alle)
  • En rask oversikt over databasetilsyn i SQL – 28. januar 2021
  • Slik konfigurerer du Azure Data Sync mellom Azure SQL-databaser og lokale SQL Server – 20. januar 2021
  • Slik utfører du Azure SQL-database Import / Export-operasjoner ved bruk av PowerShell – 14. januar , 2021

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *