SQLShack (Dansk)

SQL-datoformat fungerer som DateDiff SQL-funktion og DateAdd SQL-funktion bruges ofte af DBAer, men mange af os tog aldrig tid til fuldt ud at forstå disse ekstremt nyttige funktioner. For professionelle, der lige er kommet i gang med SQL Server, er disse funktioner nogle af de første, der bliver fortrolige med. Så forhåbentlig vil denne artikel have noget for enhver smag på tværs af færdighedsspektret

En af de mest interessante datatyper, der understøttes i den relationelle databaseverden, er DateTime. I denne artikel vil vi se på arbejdet med datatypedatatyper i SQL Server. Vi forstår de grundlæggende data-datatype og også ser vi forskellige eksempler på, hvordan man forespørger om dato-tid felter ved hjælp af indbyggede funktioner i SQL Server til at manipulere dataene, transformere dato-tid værdier og i få tilfælde udfør aritmetiske operationer.

Lad os først gå videre og se på nogle populære SQL-datoformat og tidsfunktioner.

Som standard understøtter SQL Server iboende sprogene der understøttes af Windows-operativsystemet. Afhængigt af indstillingerne for landestandarder og sortering, når du installerer SQL Server, kan visningen af SQL-datoformat være anderledes. Typen af data, du skal afspille, bestemmes ud fra lokalindstilling og SQL Server-sorteringsindstilling.

I SQL Server har datatypen DATE to standard neutrale sprogformater

  1. ÅÅÅÅMDD

    Det følgende eksempel, HumanResource .Tabellen for medarbejder forespørges for at se SQL-datoformatet for HireDate-værdier

    1
    2
    3
    4
    5
    6

    BRUG AdventureWorks2014;
    GO
    VÆLG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources. Medarbejder;
    GO

    Forespørg nu HireDate-kolonnen ved hjælp af neutralt sprogformat. I forespørgslen videregiver vi et heltal, der består af året 2008; måned, 12. og 7. dag.

    1
    2
    3

    VÆLG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources.Employee
    WHERE HireDate = “20081207”;

    Bemærk: Det betyder grundlæggende, at inputværdien er numerisk; SQL-motoren konverterer den internt og ender faktisk med en tegnværdi. Så det er omgivet af de enkelte citater

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

    I dette SQL-datoformat er HireDate-kolonnen tilføres værdierne MM-DD-ÅÅÅÅ. Dette er ikke et heltalformat. Lad os køre den samme forespørgsel med det nye SQL-datoformat af inputværdien 12 -07-2008 til HireDate-kolonnen. Så lad os køre følgende forespørgsel og kontrollere output. Outputtet er det samme sæt med fem poster.

    1
    2
    3
    4

    VÆLG HireDate, BusinessEntityID, LoginID, JobTitle
    FRA HumanResources.Employee
    WHERE HireDate = “12-07-2008”;
    GO

    Bemærk: De neutrale sprogformatværdier er implicitte, og SQL Server foretager den nødvendige konvertering. Ethvert andet SQL-datoformat kræver en korrekt konvertering af operander eller / og værdier.

Følgende eksempler viser en fejlmeddelelse på grund af forkert brug af SQL-datoformatet.

1
2
3

VÆLG HireDate, BusinessEntityID, LoginID, JobTitle
FRA HumanResources. Medarbejder
WHERE HireDate = “25-12-2008 “;

Nu konverteres operanden og dens værdier til et standardformat 103. Du kan se her for at få flere oplysninger om CAST- og Convert-funktionerne.Følgende eksempel returnerer alle medarbejderens rækker, hvor HireDate 25 -12-2008

Lad os nu start med at se på nogle af de datofunktioner, som SQL Server stiller til rådighed for os, og disse datofunktioner giver os mulighed for at arbejde med de forskellige dele af datoerne og endda manipulere nogle af de funktioner, som vi kan arbejde med i form af datoer.

Lad os se på DATEPART SQL-funktionen. Denne funktion returnerer en heltalværdi fra den angivne datakolonne

Forespørg på kolonnen HireDate for kun at returnere årsdelen af datoen

Følgende eksempel genererer en heltal-outputkolonne med navnet, og dette skal kun returnere årets værdier

1
2
3

VÆLG DATEPART (YEAR, HireDate) AS
FRA HumanResources.Employee;
GO

Forespørg om HireDate kolonne for kun at returnere månedsdelen af datoen

Følgende eksempel genererer en heltal outputkolonne med navnet, og dette skal kun returnere månedsværdierne

1
2

VÆLG DATEPART (MONTH, HireDate) AS
FRA HumanResources.Employee;

Forespørg på HireDate-kolonnen for kun at returnere kvartalsdelen af datoen

Følgende eksempel genererer en heltal-outputkolonne med navnet, og dette skal kun returnere månedsværdierne

1
2
3

VÆLG DATEPART (KVARTAL, HireDate) SOM
FRA HumanResources.Employee;
GO

Følgende eksempel returnerer salgsoplysningerne for den specifikke dag i feltet OrderDate. Eksemplet viser også brugen af DATEPART SQL-funktionen og dens få tilknyttede argumenter.

SELECT-sætningen vælger DATEPART, som er funktionsnavnet, og det tager to argumenter inden for parenteserne. For det første datepart-argumentet og det andet datoudtrykket.

Lad os se på brugen af DATENAME SQL-funktionen. Dette svarer til en DATEPART SQL-funktion, men den returnerer en tegnstreng fra det angivne datofelt.

Lad os derefter kigge på de deterministiske funktioner, der returnerer dato og klokkeslæt som et heltal. Følgende eksempel returnerer heltalværdier fra feltet OrderDate for de tilsvarende YEAR- og MONTH-funktioner.

Outputtet er en samlet værdi af TotalSales baseret på månedligt salg.

Lad os nu tage et kig på et par andre forskellige funktioner. Og denne, vi skal se på, hedder DATEDIFF. DATEDIFF SQL-funktionen returnerer en underskrevet heltalsværdi, der giver os mulighed for at bestemme forløbet tid mellem to datoer.

Lad os lege med forespørgslen for at bruge forskellige datodele til at se resultaterne.

Følgende eksempel returnerer tidsdelene mellem de to DateTime-felter. I dette eksempel beregnes timer, minutter og sekunder mellem DateTime-værdierne ved hjælp af DATEDIFF SQL-funktion

Hvordan at bruge DATEDIFF SQL-funktionen i hvor-klausulen

Følgende eksempel returnerer alle de medarbejdere, der arbejder med organisationen i mere end 10 år. Den betingede logik i HireDate-kolonnen sammenlignes med mere end 120 måneder er nævnt i hvor-klausulen.

1
2
3
4

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

Sådan bruges DateDiff SQL-funktionen med en samlet funktion

Følgende eksempel returnerer antallet af år mellem den første lejedato og den sidste ansættelsesdato. I dette tilfælde er vi på udkig efter den minimale HireDate og den maksimale HireDate-samlede funktion, der bruges som inputparametre til DATEDIFF SQL-funktionen.Med disse værdier kunne man nemt finde antallet af år, der eksisterede mellem den første gangs leje og den sidste gangs leje.

1
2

VÆLG DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FRA HumanResources.Employee;

Lad os se på DATEADD SQL-funktionen. Funktionerne tilføjer eller trækker værdien til den specificerede datadel og returnerer den modificerede værdi for datadelen.

Lad os se på følgende eksempel. Værdien 1 tilføjes til de forskellige datadele, og værdien -1 føjes til timedatadelen og -30 tilføjes til minutdatadelen.

I output kan vi se, at værdien betjenes på GETDATE () fungerer som defineret datadel.

Bemærk: DATEADD og DATEDIFF SQL-funktionen kan bruges i SELECT, WHERE, HAVING, GROUP BY og ORDER BY-klausuler.

Datadiff vs Datediff_BIG

Det er alt for nu i denne artikel i SQL-datoformat …

Wrap Up

Indtil videre har vi set meget vigtige SQL-datoformatfunktioner som DATEPART, DATENAME, YEAR, MONTH og DAY, med særlig vægt på DATEADD SQL-funktionen og DATEDIFF SQL-funktionen. SQL-datoformatfunktioner i SQL-server er virkelig stærke og hjælper virkelig med at levere effektiv dataanalyse og rapporter. I nogle tilfælde er det et spørgsmål om at justere sorteringsindstillinger, placeringsindstillinger, blot justere indgangsstrømmen af tekstværdi eller korrigere, så datakilden ville være tilstrækkelig med datoen.

Det anbefales at bruge det neutrale sprogformat, fordi det i de fleste tilfælde fungerer bedre. Endelig ser vi forskellen mellem DATEDIFF SQL-funktion og DATEDIFF_BIG SQL-funktion. Jeg håber du kan lide denne artikel. Hvis du har spørgsmål, er du velkommen til at kommentere nedenfor

  • Forfatter
  • Seneste indlæg
Jeg er databaseteknolog med 11+ års rig, praktisk erfaring med databaseteknologier. Jeg er Microsoft Certified Professional og bakket op med en kandidatgrad i Master of Computer Application.
Min specialitet ligger i at designe & implementering af høj tilgængelighedsløsninger og cross-platform DB Migration. De teknologier, der i øjeblikket arbejder på, er SQL Server, PowerShell, Oracle og MongoDB.
Vis alle indlæg af Prashanth Jayaram

Seneste indlæg af Prashanth Jayaram (se alle)
  • En hurtig oversigt over databaseovervågning i SQL – 28. januar 2021
  • Sådan opsættes Azure Data Sync mellem Azure SQL-databaser og lokal SQL Server – 20. januar 2021
  • Sådan udføres Azure SQL-database Import / Export-operationer ved hjælp af PowerShell – 14. januar , 2021

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *