Wenn Sie SQL Server verwenden, haben Sie einige verschiedene Optionen, wenn Sie den Monatsnamen von einem Datum mit T-SQL zurückgeben müssen. Mit Monatsnamen meine ich nicht die Monatsnummer (wie 07 ). Ich spreche vom vollständigen Namen des Monats (z. B. Juli). ).
Zum Beispiel, wenn das Datum 2018-07-01 angegeben wird , Sie möchten Juli zurückzusenden.
Dieser Artikel stellt drei Möglichkeiten vor, den Monatsnamen von einem Datum in SQL Server mit T-SQL zurückzugeben.
Die FORMAT()-Funktion
Das FORMAT()
Die Funktion gibt einen Wert zurück, der im angegebenen Format und der optionalen Kultur formatiert ist. Sie können es verwenden, um den Monatsnamen von einem Datum zurückzugeben.
Hier ist ein Beispiel:
DECLARE @date datetime2 = '2018-07-01'; SELECT FORMAT(@date, 'MMMM') AS Result;
Ergebnis:
+----------+ | Result | |----------| | July | +----------+
In diesem Fall haben wir eine Formatzeichenfolge von MMMM
bereitgestellt Dies ist eine benutzerdefinierte Formatzeichenfolge für Datum und Uhrzeit zur Rückgabe des Monatsnamens.
Das Gute am FORMAT()
Funktion ist, dass sie ein optionales Argument akzeptiert, mit dem Sie die zu verwendende Kultur angeben können.
Hier sind einige Beispiele:
DECLARE @date datetime2 = '2018-07-01'; SELECT FORMAT(@date, 'MMMM', 'en-US') AS 'en-US', FORMAT(@date, 'MMMM', 'es-es') AS 'es-es', FORMAT(@date, 'MMMM', 'de-de') AS 'de-de', FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';
Ergebnis:
+---------+---------+---------+---------+ | en-US | es-es | de-de | zh-cn | |---------+---------+---------+---------| | July | julio | Juli | 七月 | +---------+---------+---------+---------+
Wenn Sie das Kulturargument nicht angeben, wird die Sprache der aktuellen Sitzung verwendet. Wenn Sie sich nicht sicher sind, welche Sprache in der aktuellen Sitzung verwendet wird, haben Sie hier drei Möglichkeiten, die Sprache der aktuellen Sitzung abzurufen. Wenn Sie feststellen, dass Sie die Sprache ändern müssen, gehen Sie wie folgt vor, um sie auf eine andere Sprache einzustellen.
Sie können auch das FORMAT()
verwenden Funktion, um den abgekürzten Monatsnamen zu erhalten. Verwenden Sie dazu einfach MMM
(drei M
s statt vier).
Hier ist ein Beispiel, das sowohl den abgekürzten als auch den vollständigen Monatsnamen zurückgibt:
DECLARE @date datetime2(0) = '2028-09-01'; SELECT FORMAT(@date, 'MMM', 'en-US') 'en-US', FORMAT(@date, 'MMM', 'es-es') 'es-es', FORMAT(@date, 'MMM', 'it') 'it' UNION ALL SELECT FORMAT(@date, 'MMMM', 'en-US'), FORMAT(@date, 'MMMM', 'es-es'), FORMAT(@date, 'MMMM', 'it');
Ergebnis:
+-----------+------------+-----------+ | en-US | es-es | it | |-----------+------------+-----------| | Sep | sep. | set | | September | septiembre | settembre | +-----------+------------+-----------+
Dies ist nur eine von vielen Möglichkeiten, um den abgekürzten Monatsnamen aus einem Datum zu erhalten (obwohl diese Methode wohl die beste ist). Es gibt mindestens vier weitere Möglichkeiten, den abgekürzten Monatsnamen eines Datums zurückzugeben.
Die DATENAME()-Funktion
Der DATENAME()
Funktion ähnelt der DATEPART()
Funktion, außer dass sie den Namen zurückgibt des angegebenen Datumsteils (jedoch nur, wenn ein Name anwendbar ist). Das heißt, es gibt den Wochentagsnamen oder den Monatsnamen zurück, wenn Sie dies wünschen.
So erhalten Sie den Monatsnamen mit dieser Funktion:
DECLARE @date datetime2 = '2018-07-01'; SELECT DATENAME(month, @date) AS Result;
Ergebnis:
+----------+ | Result | |----------| | July | +----------+
Die ODBC-Skalarfunktion MONTHNAME()
Es gibt eine ODBC-Skalarfunktion speziell für die Rückgabe des Monatsnamens aus einem Datum. Sein Name ist MONTHNAME()
, und es geht so:
DECLARE @date datetime2 = '2018-07-01'; SELECT {fn MONTHNAME(@date)} AS Result;
Ergebnis:
+----------+ | Result | |----------| | July | +----------+
Bei Verwendung von ODBC-Skalarfunktionen in T-SQL werden sie von geschweiften Klammern umgeben ({}
) und dem Funktionsnamen wird fn
vorangestellt .
Wenn Sie den kurzen Monatsnamen abrufen müssen, finden Sie weitere Informationen unter 5 Möglichkeiten, den kurzen Monatsnamen aus einem Datum in SQL Server abzurufen.