MySQL heeft een PERIOD_ADD()
functie waarmee u een aantal maanden aan een bepaalde periode kunt toevoegen. Het retourneert een waarde in de notatie JJJJMM .
Dit artikel geeft voorbeelden om te laten zien hoe het werkt.
Syntaxis
De syntaxis gaat als volgt:
PERIOD_ADD(P,N)
Waar P
is de punt, en N
is het aantal maanden dat moet worden toegevoegd.
Merk op dat, hoewel deze functie maanden lijkt toe te voegen aan een datum, het argument period eigenlijk geen datumwaarde is.
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld.
SELECT PERIOD_ADD(202101,2);
Resultaat:
+----------------------+ | PERIOD_ADD(202101,2) | +----------------------+ | 202103 | +----------------------+
Dus in dit geval hebben we twee maanden aan de periode toegevoegd.
Voorbeeld 2 – Negatieve waarden
Hier is een voorbeeld waarbij een negatief aantal maanden wordt opgeteld.
SELECT PERIOD_ADD(202101,-2);
Resultaat:
+-----------------------+ | PERIOD_ADD(202101,-2) | +-----------------------+ | 202011 | +-----------------------+
Voorbeeld 3 – Tweecijferige jaren
In dit voorbeeld wordt een jaarcomponent van twee cijfers gebruikt.
SELECT PERIOD_ADD(2101,2);
Resultaat:
+--------------------+ | PERIOD_ADD(2101,2) | +--------------------+ | 202103 | +--------------------+
U zult merken dat het resultaat nog steeds een jaartal van vier cijfers gebruikt (ook al hebben we het argument periode als een jaar van twee cijfers gegeven).
Voorbeeld 4 – De huidige datum gebruiken
In dit voorbeeld wordt de periode afgeleid van de huidige datum. Het voegt dan een maand toe aan die periode.
SELECT CURDATE( ) AS 'Current Date', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Next Period';
Resultaat:
+--------------+----------------+-------------+ | Current Date | Current Period | Next Period | +--------------+----------------+-------------+ | 2018-06-30 | 201806 | 201807 | +--------------+----------------+-------------+
Voorbeeld 5 – Een databasevoorbeeld
Hier is een voorbeeld dat een database doorzoekt.
USE sakila; SELECT payment_date AS 'Payment Date', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Payment Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM payment_date), 12) AS 'Next Payment' FROM payment WHERE payment_id = 1;
Resultaat:
+---------------------+----------------+--------------+ | Payment Date | Payment Period | Next Payment | +---------------------+----------------+--------------+ | 2005-05-25 11:30:37 | 200505 | 200605 | +---------------------+----------------+--------------+