sql >> Base de Datos >  >> RDS >> SQLite

Agregar meses a una fecha en SQLite

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