sql >> Databasteknik >  >> RDS >> Sqlserver

MONTH() Exempel i SQL Server (T-SQL)

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.


  1. Ignorerar MySQL nollvärden på unika begränsningar?

  2. VÄNSTER JOIN endast första raden

  3. 1052:Kolumn 'id' i fältlistan är tvetydig

  4. Aktiverar TLS i R12.1