MySQL ha un PERIOD_ADD()
funzione che consente di aggiungere un numero di mesi a un determinato periodo. Restituisce un valore nel formato AAAAMM .
Questo articolo fornisce esempi per dimostrare come funziona.
Sintassi
La sintassi è questa:
PERIOD_ADD(P,N)
Dove P
è il punto e N
è il numero di mesi da aggiungere.
Nota che, sebbene questa funzione sembri aggiungere mesi a una data, l'argomento del periodo non è in realtà un valore di data.
Esempio 1 – Utilizzo di base
Ecco un esempio di base.
SELECT PERIOD_ADD(202101,2);
Risultato:
+----------------------+ | PERIOD_ADD(202101,2) | +----------------------+ | 202103 | +----------------------+
Quindi, in questo caso, abbiamo aggiunto due mesi al periodo.
Esempio 2 – Valori negativi
Ecco un esempio che aggiunge un numero negativo di mesi.
SELECT PERIOD_ADD(202101,-2);
Risultato:
+-----------------------+ | PERIOD_ADD(202101,-2) | +-----------------------+ | 202011 | +-----------------------+
Esempio 3 – Anni a due cifre
Questo esempio utilizza un componente anno a due cifre.
SELECT PERIOD_ADD(2101,2);
Risultato:
+--------------------+ | PERIOD_ADD(2101,2) | +--------------------+ | 202103 | +--------------------+
Noterai che il risultato utilizza ancora un anno a quattro cifre (anche se abbiamo fornito l'argomento del periodo come un anno a due cifre).
Esempio 4:utilizzo della data corrente
Questo esempio deriva il periodo dalla data corrente. Quindi aggiunge un mese a quel periodo.
SELECT CURDATE( ) AS 'Current Date', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Next Period';
Risultato:
+--------------+----------------+-------------+ | Current Date | Current Period | Next Period | +--------------+----------------+-------------+ | 2018-06-30 | 201806 | 201807 | +--------------+----------------+-------------+
Esempio 5:un esempio di database
Ecco un esempio che interroga un 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 payment WHERE payment_id = 1;
Risultato:
+---------------------+----------------+--------------+ | Payment Date | Payment Period | Next Payment | +---------------------+----------------+--------------+ | 2005-05-25 11:30:37 | 200505 | 200605 | +---------------------+----------------+--------------+