MySQL hat ein PERIOD_ADD()
Funktion, mit der Sie zu einem bestimmten Zeitraum eine Anzahl von Monaten hinzufügen können. Es gibt einen Wert im Format JJJJMM zurück .
Dieser Artikel enthält Beispiele, um zu demonstrieren, wie es funktioniert.
Syntax
Die Syntax lautet wie folgt:
PERIOD_ADD(P,N)
Wobei P
der Punkt ist, und N
ist die Anzahl der hinzuzufügenden Monate.
Beachten Sie, dass, obwohl diese Funktion scheinbar Monate zu einem Datum hinzufügt, das period-Argument eigentlich kein Datumswert ist.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel.
SELECT PERIOD_ADD(202101,2);
Ergebnis:
+----------------------+| PERIOD_ADD(202101,2) |+----------------------+| 202103 |+----------------------+
In diesem Fall haben wir den Zeitraum also um zwei Monate verlängert.
Beispiel 2 – Negative Werte
Hier ist ein Beispiel, das eine negative Anzahl von Monaten hinzufügt.
SELECT PERIOD_ADD(202101,-2);
Ergebnis:
+-----------------------+| PERIOD_ADD(202101,-2) |+-----------------------+| 202011 |+-------------------------------+
Beispiel 3 – Zweistellige Jahreszahl
Dieses Beispiel verwendet eine zweistellige Jahreskomponente.
SELECT PERIOD_ADD(2101,2);
Ergebnis:
+--------------------+| PERIOD_ADD(2101,2) |+--------------------+| 202103 |+--------------------+
Sie werden feststellen, dass das Ergebnis immer noch eine vierstellige Jahreszahl verwendet (obwohl wir das Punktargument als zweistellige Jahreszahl angegeben haben).
Beispiel 4 – Verwendung des aktuellen Datums
Dieses Beispiel leitet den Zeitraum vom aktuellen Datum ab. Dann wird dieser Zeitraum um einen Monat verlängert.
SELECT CURDATE( ) AS 'Aktuelles Datum', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Aktueller Zeitraum', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Nächster Zeitraum';
Ergebnis:
+--------------+----------------+------------+ | Aktuelles Datum | Aktuelle Periode | Nächste Periode |+--------------+-----------+------------+ | 2018-06-30 | 201806 | 201807 |+-------------+----------------+-------------+
Beispiel 5 – Ein Datenbankbeispiel
Hier ist ein Beispiel, das eine Datenbank abfragt.
USE sakila;SELECT Payment_date AS 'Zahlungsdatum', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Zahlungszeitraum', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM payment_date), 12) AS 'Nächste Zahlung'FROM paymentWHERE payment_id =1;Ergebnis:
+---------------------+----------------+------- -------+| Zahlungsdatum | Zahlungsfrist | Nächste Zahlung |+---------------------+----------------+------- -------+| 2005-05-25 11:30:37 | 200505 | 200605 |+---------------------+----------------+-------- ------+