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

Retornar o final do mês no SQLite


No SQLite, podemos usar o seguinte método para calcular o último dia de um determinado mês.

Podemos basear isso na data atual ou em alguma outra data específica.

Último dia do mês atual


Aqui está um exemplo que retorna o último dia do mês atual:
SELECT DATE('now', 'start of month', '+1 month', '-1 day');

Resultado:
2022-03-31

Isso usa o DATE() função para retornar os resultados que queremos. O 'now' O argumento retorna a data atual e o 'start of month' argumento o modifica para o início do mês. Em seguida, usamos '+1 month' para adicionar um mês ao início do mês (o que o deslocaria para o início do mês seguinte), reduzimos essa data em um dia (para trazê-la de volta ao final do mês inicial).

Último dia de um mês especificado


Mas, como mencionado, não estamos limitados apenas ao final do mês atual. Podemos especificar qualquer data e retornará o final do mês, com base nessa data.

aqui estão alguns exemplos:
SELECT 
    DATE('2023-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2023-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2023-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Resultado:
Feb         Nov         Dec       
----------  ----------  ----------
2023-02-28  2023-11-30  2023-12-31

Podemos ver que o SQLite é inteligente o suficiente para descobrir quantos dias há em cada mês. Quando usamos '+1 month' , o SQLite sabe quantos dias existem em cada mês. Podemos ver que fevereiro tem 28 dias, 30 de novembro e dezembro tem 31.

Se mudarmos a data original para 2024, podemos ver que fevereiro tem 29 dias nesse ano:
SELECT 
    DATE('2024-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2024-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2024-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Resultado:
Feb         Nov         Dec       
----------  ----------  ----------
2024-02-29  2024-11-30  2024-12-31