En SQLite, podemos usar DATE()
función para agregar uno o más meses a una fecha.
Cuando tratamos con valores de fecha y hora, podemos usar DATETIME()
función.
Ejemplo
Aquí hay un ejemplo que usa DATE()
función:
SELECT DATE('2050-08-21', '+1 month');
Resultado:
2050-09-21
Si quisiéramos restar la cantidad, podríamos reemplazar +
con -
.
Además, omitiendo el +
parte da como resultado la cantidad que se agrega, como si hubiéramos usado +
:
SELECT DATE('2050-08-21', '1 month');
Resultado:
2050-09-21
Podemos especificar los meses en forma plural o no plural. En otras palabras, month
es equivalente a months
:
SELECT
DATE('2050-08-21', '+3 month') AS month,
DATE('2050-08-21', '+3 months') AS months;
Resultado:
month months ---------- ---------- 2050-11-21 2050-11-21
Especificado en Días
Alternativamente, podemos agregar un mes o más a la fecha en función de una cantidad de días:
SELECT DATE('2050-08-21', '+31 days');
Resultado:
2050-09-21
Aunque tenga en cuenta que esto requerirá que sepa exactamente cuántos días son apropiados para los meses involucrados. Algunos meses tienen 30 días, otros 31 y febrero tiene 28 o 29, dependiendo de si es un año bisiesto o no.
Con el month
/months
modificador, SQLite normaliza la fecha, en función de la cantidad de días en los meses relevantes.
Aquí hay una comparación de meses y días al agregar una fecha en marzo:
SELECT
DATE('2050-03-31', '+1 month') AS "1 month",
DATE('2050-03-31', '+30 days') AS "30 days",
DATE('2050-03-31', '+31 days') AS "31 days";
Resultado:
1 month 30 days 31 days ---------- ---------- ---------- 2050-05-01 2050-04-30 2050-05-01
Y aquí está la misma comparación al agregar a una fecha en septiembre:
SELECT
DATE('2050-09-30', '+1 month') AS "1 month",
DATE('2050-09-30', '+30 days') AS "30 days",
DATE('2050-09-30', '+31 days') AS "31 days";
Resultado:
1 month 30 days 31 days ---------- ---------- ---------- 2050-10-30 2050-10-30 2050-10-31
El DATETIME()
Función
Aquí hay un ejemplo que demuestra cómo usar el DATETIME()
función para agregar un mes a un valor de fecha y hora:
SELECT DATETIME('2050-08-21', '+1 month');
Resultado:
2050-09-21 00:00:00
En este caso, pasé un valor de fecha, pero la función devolvió un valor de fecha y hora.
Aquí hay otro ejemplo, esta vez con un valor de fecha y hora:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month');
Resultado:
2050-09-21 18:30:45