MySQL tiene un PERIOD_ADD()
función que le permite agregar un número de meses a un período determinado. Devuelve un valor con el formato YYYYMM .
Este artículo proporciona ejemplos para demostrar cómo funciona.
Sintaxis
La sintaxis es así:
PERIOD_ADD(P,N)
Donde P
es el punto, y N
es el número de meses a agregar.
Tenga en cuenta que, aunque esta función parece agregar meses a una fecha, el argumento del período no es en realidad un valor de fecha.
Ejemplo 1:uso básico
Este es un ejemplo básico.
SELECT PERIOD_ADD(202101,2);
Resultado:
+----------------------+ | PERIOD_ADD(202101,2) | +----------------------+ | 202103 | +----------------------+
Entonces, en este caso, agregamos dos meses al período.
Ejemplo 2:valores negativos
Este es un ejemplo que suma una cantidad negativa de meses.
SELECT PERIOD_ADD(202101,-2);
Resultado:
+-----------------------+ | PERIOD_ADD(202101,-2) | +-----------------------+ | 202011 | +-----------------------+
Ejemplo 3:años de dos dígitos
Este ejemplo utiliza un componente de año de dos dígitos.
SELECT PERIOD_ADD(2101,2);
Resultado:
+--------------------+ | PERIOD_ADD(2101,2) | +--------------------+ | 202103 | +--------------------+
Notará que el resultado todavía usa un año de cuatro dígitos (aunque proporcionamos el argumento del período como un año de dos dígitos).
Ejemplo 4:uso de la fecha actual
Este ejemplo deriva el período de la fecha actual. Luego agrega un mes a ese 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:
+--------------+----------------+-------------+ | Current Date | Current Period | Next Period | +--------------+----------------+-------------+ | 2018-06-30 | 201806 | 201807 | +--------------+----------------+-------------+
Ejemplo 5:un ejemplo de base de datos
Aquí hay un ejemplo que consulta una base de datos.
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;
Resultado:
+---------------------+----------------+--------------+ | Payment Date | Payment Period | Next Payment | +---------------------+----------------+--------------+ | 2005-05-25 11:30:37 | 200505 | 200605 | +---------------------+----------------+--------------+