SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Adicionar meses a uma data no SQLite


No SQLite, podemos usar o DATE() função para adicionar um ou mais meses a uma data.

Quando estamos lidando com valores de data e hora, podemos usar o DATETIME() função.

Exemplo


Aqui está um exemplo que usa o DATE() função:
SELECT DATE('2050-08-21', '+1 month');

Resultado:
2050-09-21

Se quiséssemos subtrair o valor, poderíamos substituir + com - .

Além disso, omitindo o + parte resulta no valor adicionado, como se tivéssemos usado + :
SELECT DATE('2050-08-21', '1 month');

Resultado:
2050-09-21

Podemos especificar os meses na forma plural ou não plural. Em outras palavras, month é 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 em dias


Alternativamente, podemos adicionar um mês ou mais à data com base em um número de dias:
SELECT DATE('2050-08-21', '+31 days');

Resultado:
2050-09-21

No entanto, tenha em mente que isso exigirá que você saiba exatamente quantos dias são apropriados para os meses envolvidos. Alguns meses têm 30 dias, alguns têm 31 e fevereiro tem 28 ou 29, dependendo se é um ano bissexto ou não.

Com o month /months modificador, o SQLite normaliza a data, com base no número de dias nos meses relevantes.

Aqui está uma comparação de meses versus dias ao adicionar uma data em março:
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

E aqui está a mesma comparação ao adicionar uma data em setembro:
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

O DATETIME() Função


Aqui está um exemplo que demonstra como usar o DATETIME() função para adicionar um mês a um valor de data e hora:
SELECT DATETIME('2050-08-21', '+1 month');

Resultado:
2050-09-21 00:00:00

Nesse caso, passei um valor de data, mas a função retornou um valor de data e hora.

Aqui está outro exemplo, desta vez com um valor datetime:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month');

Resultado:
2050-09-21 18:30:45