sql >> Database teknologi >  >> RDS >> Sqlserver

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

I SQL Server kan du bruge MONTH() funktion for at returnere "måned"-delen af ​​en dato. Dette returneres som et heltal (ikke månedens navn).

Nedenfor er eksempler på, hvordan du bruger denne funktion.

Syntaks

Syntaksen ser sådan ud:

MONTH ( date )

Hvor date er et udtryk, der løses til en af ​​følgende datatyper:

  • dato
  • datotid
  • datotidsforskydning
  • datetime2
  • smalldatetime
  • tid

Dette kan være et kolonneudtryk, et udtryk, en streng-literal eller en brugerdefineret variabel.

Eksempel

Her er et grundlæggende eksempel på, hvordan det virker:

SELECT 
   SYSDATETIME() AS 'Date',
   MONTH(SYSDATETIME()) AS 'Month';

Resultat:

+-----------------------------+---------+
| Date                        | Month   |
|-----------------------------+---------|
| 2018-06-18 00:39:06.7954314 | 6       |
+-----------------------------+---------+

MONTH() funktion var i stand til at udtrække måneden fra datetime2 værdi (som blev returneret af SYSDATETIME() funktion).

Dato angivet som en tekststreng

Her er et eksempel, hvor datoen er angivet som en bogstavelig streng.

SELECT MONTH('2019-01-07') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Og her er et eksempel, hvor datoen er angivet i et andet format:

SELECT MONTH('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Det er dog normalt bedst at undgå at bruge datoer i sådanne formater. Hvis du skal gøre det, skal du være opmærksom på sprogindstillingerne og/eller datoformatindstillingerne for den aktuelle session.

Sprogindstillinger

Outputtet fra det forrige eksempel vil afhænge af sprogindstillingerne og/eller datoformatindstillingerne for den aktuelle session.

Når vi indstiller sproget, indstilles datoformatet implicit på samme tid.

Her er, hvad der sker, når vi leverer det samme datoargument i to forskellige sprogmiljøer.

britisk

SET LANGUAGE British;
SELECT MONTH('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

us_engelsk

SET LANGUAGE us_English;
SELECT MONTH('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Indstillinger for datoformat

Indstillingerne for datoformat kan tilsidesætte sprogindstillingerne, så du skal også være opmærksom på denne indstilling. For eksempel kan vi bruge us_engelsk for vores sprog (som har et standarddatoformat på mdy ), men vi kunne tilsidesætte datoformatet til at være dmy .

Her er et eksempel:

us_English – Standard datoformat

Her indstiller vi sproget til us_engelsk , som implicit sætter datoformatet til myy .

SET LANGUAGE us_English;
SELECT MONTH('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 7        |
+----------+

us_English – Tilsidesæt datoformat

Her indstiller vi sproget til us_engelsk (som implicit sætter datoformatet), men så sætter vi eksplicit datoformatet til dmy . Dette tilsidesætter det datoformat, der implicit blev indstillet, da vi indstillede sproget.

SET LANGUAGE us_English;
SET DATEFORMAT dmy;
SELECT MONTH('07/01/2017') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Returnér månedens navn

Hvis du har brug for at returnere månedsnavnet (i modsætning til månedsnummeret), se 3 måder at få månedsnavnet på fra en dato i SQL Server.


  1. Ti måder dit dataprojekt kommer til at mislykkes på

  2. Optimering af opdateringsforespørgsler

  3. Den flerdelte identifikator kunne ikke bindes

  4. Tjek om sekvensen findes i Postgres (plpgsql)