Kategorien:

Datums- und Uhrzeitfunktionen

ADD_MONTHS

Addiert oder subtrahiert eine bestimmte Anzahl von Monaten zu bzw. von einem Datum oder Zeitstempel, wobei die Monatsendinformationen erhalten bleiben.

Syntax

ADD_MONTHS( <date_or_timestamp_expr> , <num_months_expr> )

Argumente

Benötigt:

Datum/Zeitstempel-Ausdruck

Dies ist der Datums- oder Zeitstempelausdruck, zu dem Sie eine bestimmte Anzahl von Monaten hinzufügen.

Anzahl-der-Monate-Ausdruck

Dies ist die Anzahl der Monate, die Sie hinzufügen. Dies sollte eine ganze Zahl sein. Sie kann positiv oder negativ sein. Wenn der Wert ein nicht ganzzahliger numerischer Wert ist (z. B. FLOAT), wird der Wert auf die nächste Ganzzahl gerundet.

Rückgabewerte

Der Datentyp des zurückgegebenen Wertes entspricht dem Datentyp des ersten Parameters. Wenn die Eingabe beispielsweise ein DATE-Wert ist, ist die Ausgabe ebenfalls ein DATE-Wert. Wenn die Eingabe ein TIMESTAMP_NTZ-Wert ist, dann ist die Ausgabe ebenfalls ein TIMESTAMP_NTZ-Wert.

Nutzungshinweise

  • ADD_MONTHS gibt etwas andere Ergebnisse zurück als DATEADD, das mit einer MONTH-Komponente verwendet wird:

    • Sowohl bei ADD_MONTHS als auch bei DATEADD gilt: Wenn der resultierende Monat weniger Tage hat als der ursprüngliche Tag, ist der resultierende Tag des Monats der letzte Tag des resultierenden Monats.

    • Nur bei ADD_MONTHS gilt: Wenn der ursprüngliche Tag der letzte Tag des Monats ist, ist der resultierende Tag des Monats der letzte Tag des resultierenden Monats.

  • Anzahl-der-Monate-Ausdruck kann eine positive oder negative ganze Zahl sein, die zum Addieren bzw. Subtrahieren von Monaten dient.

Beispiele

Hinzufügen von 2 Monaten zu einem Datum und Umwandeln des Datums in einen Zeitstempel ohne Zeitzone:

SELECT ADD_MONTHS('2016-05-15'::timestamp_ntz, 2) AS RESULT;
+-------------------------+
| RESULT                  |
|-------------------------|
| 2016-07-15 00:00:00.000 |
+-------------------------+

Demonstrieren der Erhaltung der Monatsendinformationen:

  • Hinzufügen eines Monats zum letzten Tag im Februar 2016 (ein Schaltjahr).

  • Subtrahieren eines Monats vom letzten Tag des Monats Mai 2016.

    SELECT ADD_MONTHS('2016-02-29'::date, 1) AS RESULT;
    +------------+
    | RESULT     |
    |------------|
    | 2016-03-31 |
    +------------+
    
    SELECT ADD_MONTHS('2016-05-31'::date, -1) AS RESULT;
    +------------+
    | RESULT     |
    |------------|
    | 2016-04-30 |
    +------------+