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