Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Konvertieren eines Monatsnamens in die Monatsnummer in SQL Server (T-SQL)

In SQL Server können Sie den MONTH() verwenden Funktion, um einen Monatsnamen in die entsprechende Zahl umzuwandeln.

Beispiel

Hier ist ein Beispiel für die Umwandlung eines Monatsnamens in eine Monatsnummer.

SELECT MONTH('September' + '1,1');

Ergebnis:

9

Was ich hier mache, ist im Grunde genommen, ein „Datum“ zu fabrizieren (das meinen angegebenen Monat enthält), damit SQL Server keinen Fehler ausgibt, wenn MONTH() verwendet wird Funktion ohne gültiges Datum.

Diese Funktion akzeptiert jeden Ausdruck, der in eine Zeit aufgelöst werden kann , Datum , smalldatetime , datetime , datetime2 , oder datetimeoffset Wert. Dies kann ein Ausdruck, ein Spaltenausdruck, eine benutzerdefinierte Variable oder ein Zeichenfolgenliteral sein.

Mehr „Date-Like“

Sie könnten auch ein „datumsähnlicheres“ Argument bereitstellen, indem Sie so etwas tun:

SELECT MONTH('September' + ' 01, 1900');

Ergebnis:

9

Aktueller Tag und Jahr

Oder wenn Sie lieber den aktuellen Tag und das aktuelle Jahr verwenden möchten, können Sie Folgendes tun:

SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));

Ergebnis:

9

Nur um das klarzustellen:Wenn der angegebene Monat nicht mit dem aktuellen Monat übereinstimmt, erhalten Sie am Ende ein anderes Datum als das aktuelle Datum.

Hier ist ein Beispiel, um zu veranschaulichen, was ich meine:

SELECT 
  FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
  'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
  MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];

Ergebnis:

 +----------------+--------------------+----------------+
 | Today          | Modified           | Month Number   |
 |----------------+--------------------+----------------|
 | March 22, 2020 | September 22, 2020 | 9              |
 +----------------+--------------------+----------------+ 

Ich habe diese Abfrage am 22. März 2020 ausgeführt, aber das Änderungsdatum ist der 22. September 2020.

Unabhängig davon wird die korrekte Monatsnummer zurückgegeben, wenn wir MONTH() verwenden .