I SQL Server kan du bruge MONTH()
funktion til at konvertere et måneds navn til dets tilsvarende nummer.
Eksempel
Her er et eksempel på at konvertere et måneds navn til månedsnummeret.
SELECT MONTH('September' + '1,1');
Resultat:
9
Det, jeg laver her, er dybest set at fremstille en "dato" (der inkluderer min angivne måned), så SQL Server ikke sender en fejl, når du bruger MONTH()
funktion uden en gyldig dato.
Denne funktion accepterer ethvert udtryk, der kan løses til et tidspunkt , dato , smalldatetime , datotid , datetime2 eller datotidsforskydning værdi. Det kan være et udtryk, kolonneudtryk, brugerdefineret variabel eller streng-literal.
Mere "Date-like"
Du kan også give et mere "dato-lignende" argument ved at gøre noget som dette:
SELECT MONTH('September' + ' 01, 1900');
Resultat:
9
Nuværende dag og år
Eller hvis du foretrækker at bruge den aktuelle dag og år, kan du gøre noget som dette:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
Resultat:
9
Bare for at være klar, medmindre den angivne måned er den samme som den aktuelle måned, ender du med en anden dato end den aktuelle dato.
Her er et eksempel for at illustrere, hvad jeg mener:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
Resultat:
+----------------+---------------------------+-------- --------+ | I dag | Ændret | Månedsnummer | |----------------+---------------------+------------ -----| | 22. marts 2020 | 22. september 2020 | 9 | +----------------+---------------------+------------ -----+
Jeg kørte denne forespørgsel den 22. marts 2020, men den ændrede dato er den 22. september 2020.
Uanset hvad returneres det korrekte månedsnummer, når vi bruger MONTH()
.