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

Konverter et månedsnavn til månedsnummeret i SQL Server (T-SQL)

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() .


  1. SQL Server - indre joinforbindelse ved opdatering

  2. Opsætning af fremmednøgle med anden datatype

  3. Hvorfor returnerer CONNECT BY LEVEL på en tabel ekstra rækker?

  4. Er der en Entity Framework 7 Database-First POCO Generator?