I SQL Server kan du använda DAY()
funktion för att returnera "dag"-delen av ett datum. Denna funktion returnerar ett heltal som representerar dagen i månaden (inte veckodagen).
Nedan finns exempel på hur du använder den här funktionen.
Syntax
Syntaxen ser ut så här:
DAY ( date )
Där date
är ett uttryck som löser sig till en av följande datatyper:
- datum
- datumtid
- datumtidsförskjutning
- datetime2
- smalldatetime
- tid
Detta kan vara ett kolumnuttryck, uttryck, strängliteral eller användardefinierad variabel.
Exempel
Här är ett grundläggande exempel på hur det fungerar:
SELECT SYSDATETIME() AS 'Date', DAY(SYSDATETIME()) AS 'Day';
Resultat:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Alltså DAY()
funktionen kunde extrahera dagen från datetime2 värde (som returnerades av SYSDATETIME()
funktion).
Datum tillhandahålls som en bokstavlig sträng
Här är ett exempel där datumet anges som en bokstavlig sträng.
SELECT DAY('2019-01-07') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
Och här är ett exempel där datumet anges i ett annat format:
SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Det är dock vanligtvis bäst att undvika att använda datum i sådana format. Om du måste göra det måste du vara uppmärksam på språkinställningarna och/eller datumformatinställningarna för den aktuella sessionen.
Språkinställningar
Utdata från föregående exempel kommer att bero på språkinställningarna och/eller datumformatinställningarna för den aktuella sessionen.
När vi ställer in språket ställs datumformatet implicit in samtidigt.
Det här är vad som händer när vi tillhandahåller samma datumargument i två olika språkmiljöer.
brittisk
SET LANGUAGE British; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
us_engelska
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Inställningar för datumformat
Datumformatinställningarna kan åsidosätta språkinställningarna, så du måste också vara medveten om denna inställning. Till exempel kan vi använda us_english för vårt språk (som har standarddatumformatet mdy). ), men vi kan åsidosätta datumformatet till att vara dmy .
Här är ett exempel:
us_english – Standarddatumformat
Här ställer vi in språket till us_english , som implicit ställer in datumformatet till myy .
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
us_english – Åsidosätt datumformat
Här ställer vi in språket till us_english (vilket implicit anger datumformatet), men sedan ställer vi uttryckligen in datumformatet till dmy . Detta åsidosätter datumformatet som implicit ställdes in när vi ställde in språket.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
Återställ dagnamnet
Om du behöver returnera dagnamnet (i motsats till dagnumret), se 3 sätt att få dagnamnet från ett datum i SQL Server.