MySQL tem um
PERIOD_ADD()
função que permite adicionar um número de meses a um determinado período. Ele retorna um valor no formato AAAAMM . Este artigo fornece exemplos para demonstrar como funciona.
Sintaxe
A sintaxe fica assim:
PERIOD_ADD(P,N)
Onde
P
é o período e N
é o número de meses para adicionar. Observe que, embora essa função pareça adicionar meses a uma data, o argumento de período não é realmente um valor de data.
Exemplo 1 – Uso básico
Aqui está um exemplo básico.
SELECT PERIOD_ADD(202101,2);
Resultado:
+----------------------+| PERIOD_ADD(202101,2) |+----------------------+| 202103 |+----------------------+
Então, neste caso, adicionamos dois meses ao período.
Exemplo 2 – Valores negativos
Aqui está um exemplo que adiciona um número negativo de meses.
SELECT PERIOD_ADD(202101,-2);
Resultado:
+-----------------------+| PERIOD_ADD(202101,-2) |+-----------------------+| 202011 |+-----------------------+
Exemplo 3 – Anos de dois dígitos
Este exemplo usa um componente de ano de dois dígitos.
SELECT PERIOD_ADD(2101,2);
Resultado:
+--------------------+| PERIOD_ADD(2101,2) |+--------------------+| 202103 |+--------------------+
Você notará que o resultado ainda usa um ano de quatro dígitos (mesmo que tenhamos fornecido o argumento de período como um ano de dois dígitos).
Exemplo 4 – Usando a data atual
Este exemplo deriva o período da data atual. Em seguida, adiciona um mês a esse período.
SELECT CURDATE( ) AS 'Current Date', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Next Period';
Resultado:
+--------------+----------------+-------------+ | Data atual | Período atual | Próximo período |+--------------+----------------+-------------+ | 30-06-2018 | 201806 | 201807 |+--------------+----------------+-------------+Exemplo 5 – Um exemplo de banco de dados
Aqui está um exemplo que consulta um banco de dados.
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 'Próximo pagamento'FROM paymentWHERE payment_id =1;
Resultado:
+---------------------+----------------+----------- -------+| Data de Pagamento | Período de pagamento | Próximo pagamento |+---------------------+----------------+----------- -------+| 25-05-2005 11:30:37 | 200505 | 200605 |+---------------------+----------------+------------ ------+