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 | +-----------------------------+---------+
Så 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.