SQLShack (Svenska)

SQL-datumformat fungerar som DateDiff SQL-funktion och DateAdd SQL-funktion används ofta av DBA, men många av oss tog aldrig tid att förstå dessa extremt användbara funktioner. För yrkesverksamma som precis börjat med SQL Server är dessa funktioner några av de första att bekanta sig med. Så förhoppningsvis kommer den här artikeln att ha lite för alla över hela kompetensspektret

En av de mest intressanta datatyperna som stöds i den relationsdatabasvärlden är DateTime. I den här artikeln kommer vi att ta en titt på att arbeta med datatyper för datumtid i SQL Server. Vi kommer att förstå grunderna för datatiddatatyp och vi kommer också att se olika exempel på hur man frågar datum-tidsfält med hjälp av inbyggda funktioner i SQL Server för att manipulera data, omvandla datum-tidvärden och i några fall, utför aritmetiska operationer.

Låt oss först gå och titta på några populära SQL-datumformat och tidsfunktioner.

Som standard stöder SQL Server i sig språk som stöds av Windows operativsystem. Beroende på inställningar för språk och sortering när du installerar SQL Server kan visningen av SQL-datumformat vara annorlunda. Vilken typ av data du ska spela bestäms baserat på inställning av språk och inställning av SQL Server.

I SQL Server har datatypen DATE två standardformat för neutrala språk

  1. YYYYMMDD

    Följande exempel, HumanResource . Anställdstabellen frågas för att se SQL-datumformatet för HireDate-värden

    1
    2
    3
    4
    5
    6

    ANVÄND AdventureWorks2014;
    GO
    VÄLJ HireDate, BusinessEntityID, LoginID, JobTitle
    FRÅN HumanResources.Anställd;
    GO

    Nu, fråga HireDate-kolumnen i neutralt språkformat. I frågan skickar vi ett heltal som består av år 2008; månad, 12 och 7: e dagen.

    1
    2
    3

    VÄLJ HireDate, BusinessEntityID, LoginID, JobTitle
    FRÅN HumanResources.Anställd
    WHERE HireDate = ”20081207”;

    Obs: Det betyder i grunden att ingångsvärdet är numeriskt; SQL-motorn konverterar den internt och slutar faktiskt med ett teckenvärde. Så det omges av enstaka citat

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

    I detta SQL-datumformat är HireDate-kolumn matas med värdena MM-DD-YYYY. Detta är inte ett heltalsformat. Låt oss köra samma fråga med det nya SQL-datumformatet för inmatningsvärdet 12 -07-2008 till kolumnen HireDate. Så låt oss köra följande fråga och verifiera utdata. Utgången är samma uppsättning med fem poster.

    1
    2
    3
    4

    VÄLJ HireDate, BusinessEntityID, LoginID, JobTitle
    FRÅN HumanResources.Anställd
    WHERE HireDate = ”12-07-2008”;
    GO

    Obs! De neutrala språkformatvärdena är implicita och SQL Server kommer att göra nödvändig konvertering. Alla andra SQL-datumformat kräver en korrekt konvertering av operander eller / och värden.

Följande exempel visar ett felmeddelande på grund av felaktig användning av SQL-datumformatet.

1
2
3

VÄLJ HireDate, BusinessEntityID, LoginID, JobTitle
FRÅN HumanResources.Anställd
WHERE HireDate = ”25-12-2008 ”;

Nu konverteras operand och dess värden till ett standardformat 103. Du kan se här för mer information om CAST- och Convert-funktionerna.Följande exempel returnerar alla rader av den anställde där HireDate 25 -12-2008

Nu ska vi börja titta på några av de datumfunktioner som SQL Server gör tillgängliga för oss och dessa datumfunktioner gör att vi kan arbeta med de olika delarna av datumen och till och med manipulera en del av den funktionalitet som vi kan arbeta med när det gäller datum.

Låt oss titta på DATEPART SQL-funktionen. Den här funktionen returnerar ett heltalsvärde från den angivna datumkolumnen

Fråga efter kolumnen HireDate för att endast returnera årets del av datumet

Följande exempel genererar en heltalskolumn med namnet, och detta ska endast returnera årsvärdena

1
2
3

VÄLJ DATODEL (ÅR, HireDate) SOM
FRÅN HumanResources.Anställd;
GO

Fråga efter HireDate kolumn för att endast returnera månadsdelen av datumet

Följande exempel genererar en heltal utgångskolumn med namnet, och detta ska endast returnera månadsvärdena

1
2

VÄLJ DATUMEDEL (MÅNAD, HireDate) SOM
FRÅN HumanResources.Anställd;

Fråga i kolumnen HireDate för att endast returnera kvartsdelen av datumet

Följande exempel genererar en heltalskolumn med namnet, och detta ska endast returnera månadsvärdena

1
2
3

VÄLJ DATODEL (KVARTAL, HireDate) SOM
FRÅN HumanResources.Anställd;
GO

Följande exempel returnerar försäljningsinformationen för den specifika dagen i orderDate-fältet. Exemplet visar också användningen av DATEPART SQL-funktionen och dess få associerade argument.

SELECT-satsen väljer DATEPART, vilket är funktionsnamnet, och det tar två argument inom parentes. Först argumentet datepart och det andra datumuttrycket.

Låt oss titta på hur du använder DATENAME SQL-funktionen. Detta liknar en DATEPART SQL-funktion, men den returnerar en teckensträng från det angivna datumfältet.

Låt oss sedan titta på de deterministiska funktionerna som returnerar datum- och tidsdelar som ett heltal. Följande exempel returnerar heltalsvärden från OrderDate-fältet för motsvarande YEAR- och MONTH-funktioner.

Utdata är ett aggregerat värde av TotalSales baserat på månadsförsäljning.

Nu ska vi ta en titt på ett par andra olika funktioner. Och den här vi ska titta på heter DATEDIFF. DATEDIFF SQL-funktionen returnerar ett signerat heltalvärde som gör att vi kan bestämma förfluten tid mellan två datum.

Låt oss spela med frågan för att använda olika datumdelar för att se resultaten.

Följande exempel returnerar tidsdelarna mellan de två DateTime-fälten. I detta exempel beräknas timmar, minuter och sekunder mellan DateTime-värdena med hjälp av DATEDIFF SQL-funktionen

Hur att använda DATEDIFF SQL-funktionen i var-satsen

Följande exempel returnerar alla anställda som arbetar med organisationen i mer än tio år. Den villkorliga logiken i HireDate-kolumnen jämförs med mer än 120 månader nämns i där-klausulen.

1
2
3
4

VÄLJ *
FRÅN HumanResources.Employee
WHERE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
GO

Hur man använder DateDiff SQL-funktionen med en aggregerad funktion

Följande exempel returnerar antalet år mellan det första anställningsdatumet och det sista anställningsdatumet. I det här fallet letar vi efter den minsta HireDate och den maximala HireDate-aggregerade funktionen som används som ingångsparametrar för DATEDIFF SQL-funktionen.Med dessa värden kunde man enkelt hitta antalet år som fanns mellan den första anställningen och den sista anställningen.

1
2

VÄLJ DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FRÅN HumanResources.Employee;

Låt oss ta en titt på DATEADD SQL-funktionen. Funktionerna lägger till eller subtraherar värdet till den angivna datadelen och returnerar det modifierade värdet för datadelen.

Låt oss ta en titt på följande exempel. Värdet 1 adderas till de olika datadelen och värdet -1 adderas till timdatatelementet och -30 adderas till minutdatadelen.

I utgången kan vi se att värdet styrs på GETDATE () fungerar enligt den definierade datadelen.

Obs: DATEADD och DATEDIFF SQL-funktionen kan användas i SELECT, VAR, HAVING, GROUP BY och ORDER BY-klausuler.

Datadiff vs Datediff_BIG

Det är allt för nu i denna SQL-datumformatsartikel …

Wrap Up

Hittills har vi sett mycket viktiga SQL-datumformatfunktioner som DATEPART, DATENAME, YEAR, MONTH, and DAY, med särskild tonvikt på DATEADD SQL-funktionen och DATEDIFF SQL-funktionen. SQL-datumformatfunktioner på SQL-servern är riktigt kraftfulla och hjälper verkligen till att leverera effektiv dataanalys och rapporter. I vissa fall handlar det om att justera sorteringsinställningar, platsinställningar, helt enkelt justera inmatningsströmmen för textvärdet eller korrigera så att datakällan skulle räcka med datumtidsproblem.

Det rekommenderas att använda det neutrala språkformatet eftersom det fungerar bättre i de flesta fall. Äntligen ser vi skillnaden mellan DATEDIFF SQL-funktion och DATEDIFF_BIG SQL-funktion. Jag hoppas att du gillar den här artikeln. Om du har några frågor är du välkommen att kommentera nedan

  • Författare
  • Senaste inlägg
Jag är en databasteknolog som har 11+ års rik, praktisk erfarenhet av databasteknologi. Jag är Microsoft-certifierad professionell och har en examen i magisterexamen i datorprogram.
Min specialitet ligger i att designa & implementera hög tillgänglighetslösningar och plattformsmigrering över flera plattformar. De tekniker som för närvarande arbetar med är SQL Server, PowerShell, Oracle och MongoDB.
Visa alla inlägg av Prashanth Jayaram

Senaste inlägg av Prashanth Jayaram (se alla)
  • En snabb översikt över databasgranskning i SQL – 28 januari 2021
  • Så här ställer du in Azure Data Sync mellan Azure SQL-databaser och lokal SQL Server – 20 januari 2021
  • Hur man utför Azure SQL-databasimport / exportåtgärder med PowerShell – 14 januari 2021

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *