I SQL Server kan du använda MONTH()
funktion för att returnera "månad"-delen av ett datum. Detta returneras som ett heltal (inte månadens namn).
Nedan finns exempel på hur du använder den här funktionen.
Syntax
Syntaxen ser ut så här:
MONTH ( 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', MONTH(SYSDATETIME()) AS 'Month';
Resultat:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Alltså MONTH()
funktionen kunde extrahera månaden 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 MONTH('2019-01-07') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Och här är ett exempel där datumet anges i ett annat format:
SELECT MONTH('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
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 MONTH('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
us_engelska
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
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 MONTH('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
us_english – Åsidosätt datumformat
Här ställer vi in språket till us_english (som implicit ställer in datumformatet), men sedan ställer vi uttryckligen in datumformatet till dmy . Detta åsidosätter datumformatet som implicit ställdes när vi ställde in språket.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Återställ månadens namn
Om du behöver returnera månadsnamnet (i motsats till månadsnumret), se 3 sätt att få månadsnamnet från ett datum i SQL Server.