MySQL har en PERIOD_ADD()
funktion som låter dig lägga till ett antal månader till en given period. Den returnerar ett värde i formatet ÅÅÅÅMM .
Den här artikeln ger exempel för att visa hur det fungerar.
Syntax
Syntaxen ser ut så här:
PERIOD_ADD(P,N)
Där P
är perioden och N
är antalet månader som ska läggas till.
Observera att även om den här funktionen verkar lägga till månader till ett datum, är periodargumentet faktiskt inte ett datumvärde.
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel.
VÄLJ PERIOD_ADD(202101,2);
Resultat:
+-----------------------------+| PERIOD_ADD(202101,2) |+----------------------------+| 202103 |+-----------------------------+
Så i det här fallet lade vi till två månader till perioden.
Exempel 2 – Negativa värden
Här är ett exempel som lägger till ett negativt antal månader.
VÄLJ PERIOD_ADD(202101,-2);
Resultat:
+------------------------------+| PERIOD_ADD(202101,-2) |+----------------------------+| 202011 |+------------------------------+
Exempel 3 – Tvåsiffriga år
Det här exemplet använder en tvåsiffrig årskomponent.
VÄLJ PERIOD_ADD(2101,2);
Resultat:
+----------------------------+| PERIOD_ADD(2101,2) |+------------------------+| 202103 |+----------------------------+
Du kommer att märka att resultatet fortfarande använder ett fyrsiffrigt år (även om vi angav periodargumentet som ett tvåsiffrigt år).
Exempel 4 – Använda det aktuella datumet
Detta exempel härleder perioden från det aktuella datumet. Det lägger sedan till en månad till den perioden.
VÄLJ CURDATE( ) SOM "Current Date", EXTRACT(YEAR_MONTH FROM CURDATE( )) AS "Current Period", PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) SOM "Next Period";
Resultat:
+--------------+----------------+-------------+ | Aktuellt datum | Nuvarande period | Nästa period |+--------------+----------------+-------------+ | 2018-06-30 | 201806 | 201807 |+--------------+----------------+------------+
Exempel 5 – Ett databasexempel
Här är ett exempel som frågar efter en databas.
ANVÄND 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;Resultat:
+---------------------+----------------+------- -------+| Betalningsdatum | Betalningsperiod | Nästa betalning |+---------------------+----------------+------- -------+| 2005-05-25 11:30:37 | 200505 | 200605 |+---------------------+----------------+-------- ------+