In SQL Server können Sie MONTH()
verwenden Funktion, um den „Monat“-Teil eines Datums zurückzugeben. Dies wird als Ganzzahl zurückgegeben (nicht der Monatsname).
Nachfolgend finden Sie Beispiele zur Verwendung dieser Funktion.
Syntax
Die Syntax lautet wie folgt:
MONTH ( date )
Wobei date
ist ein Ausdruck, der in einen der folgenden Datentypen aufgelöst wird:
- Datum
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- Zeit
Dies kann ein Spaltenausdruck, ein Ausdruck, ein Zeichenfolgenliteral oder eine benutzerdefinierte Variable sein.
Beispiel
Hier ist ein einfaches Beispiel dafür, wie es funktioniert:
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Ergebnis:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Also der MONTH()
Funktion konnte den Monat aus datetime2 extrahieren Wert (der von SYSDATETIME()
zurückgegeben wurde Funktion).
Datum als String-Literal bereitgestellt
Hier ist ein Beispiel, in dem das Datum als String-Literal bereitgestellt wird.
SELECT MONTH('2019-01-07') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 1 | +----------+
Und hier ist ein Beispiel, wo das Datum in einem anderen Format bereitgestellt wird:
SELECT MONTH('07/01/2017') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 7 | +----------+
Es ist jedoch normalerweise am besten, Datumsangaben in solchen Formaten zu vermeiden. Wenn Sie dies tun müssen, müssen Sie die Spracheinstellungen und/oder die Datumsformateinstellungen der aktuellen Sitzung beachten.
Spracheinstellungen
Die Ausgabe des vorherigen Beispiels hängt von den Spracheinstellungen und/oder Datumsformateinstellungen der aktuellen Sitzung ab.
Wenn wir die Sprache einstellen, wird implizit gleichzeitig das Datumsformat eingestellt.
Folgendes passiert, wenn wir dasselbe Datumsargument in zwei verschiedenen Sprachumgebungen bereitstellen.
Britisch
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 1 | +----------+
us_English
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 7 | +----------+
Datumsformateinstellungen
Die Einstellungen für das Datumsformat können die Spracheinstellungen außer Kraft setzen, daher müssen Sie sich auch dieser Einstellung bewusst sein. Beispielsweise könnten wir us_English verwenden für unsere Sprache (die ein Standarddatumsformat von mdy hat ), aber wir könnten das Datumsformat auf dmy überschreiben .
Hier ist ein Beispiel:
us_English – Standard-Datumsformat
Hier stellen wir die Sprache auf us_English ein , wodurch das Datumsformat implizit auf myy gesetzt wird .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 7 | +----------+
us_English – Datumsformat überschreiben
Hier stellen wir die Sprache auf us_English ein (was implizit das Datumsformat festlegt), aber dann setzen wir das Datumsformat explizit auf dmy . Dies überschreibt das Datumsformat, das implizit festgelegt wurde, als wir die Sprache eingestellt haben.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 1 | +----------+
Geben Sie den Monatsnamen zurück
Wenn Sie den Monatsnamen (im Gegensatz zur Monatsnummer) zurückgeben müssen, lesen Sie 3 Möglichkeiten, den Monatsnamen aus einem Datum in SQL Server abzurufen.