MySQL har en PERIOD_ADD()
funktion, der giver dig mulighed for at tilføje et antal måneder til en given periode. Det returnerer en værdi i formatet ÅÅÅÅMM .
Denne artikel giver eksempler for at demonstrere, hvordan det virker.
Syntaks
Syntaksen ser sådan ud:
PERIOD_ADD(P,N)
Hvor P
er perioden, og N
er antallet af måneder, der skal tilføjes.
Bemærk, at selvom denne funktion ser ud til at tilføje måneder til en dato, er periodeargumentet faktisk ikke en datoværdi.
Eksempel 1 – Grundlæggende brug
Her er et grundlæggende eksempel.
VÆLG PERIOD_ADD(202101,2);
Resultat:
+-----------------------------+| PERIOD_ADD(202101,2) |+---------------------------+| 202103 |+-----------------------------+
Så i dette tilfælde tilføjede vi to måneder til perioden.
Eksempel 2 – Negative værdier
Her er et eksempel, der tilføjer et negativt antal måneder.
SELECT PERIOD_ADD(202101,-2);
Resultat:
+------------------------------+| PERIOD_ADD(202101,-2) |+----------------------------+| 202011 |+------------------------------+
Eksempel 3 – To cifrede år
Dette eksempel bruger en tocifret årstalskomponent.
VÆLG PERIOD_ADD(2101,2);
Resultat:
+----------------------------+| PERIOD_ADD(2101,2) |+------------------------+| 202103 |+---------------------+
Du vil bemærke, at resultatet stadig bruger et firecifret år (selvom vi har angivet periodeargumentet som et tocifret år).
Eksempel 4 – Brug af den aktuelle dato
Dette eksempel udleder perioden fra den aktuelle dato. Det tilføjer derefter en måned til den periode.
VÆLG CURDATE( ) AS 'Current Date', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Next Period';
Resultat:
+-------------+----------------+------------+ | Nuværende dato | Nuværende periode | Næste periode |+--------------+----------------+------------+ | 30-06-2018 | 201806 | 201807 |+--------------+----------------+------------+
Eksempel 5 – Et databaseeksempel
Her er et eksempel, der forespørger i en database.
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 paymentWHERE payment_id =1; før>Resultat:
+---------------------+----------------+------- -------+| Betalingsdato | Betalingsperiode | Næste betaling |+---------------------+----------------+------- -------+| 25-05-2005 11:30:37 | 200505 | 200605 |+---------------------+----------------+-------- ------+