SQLite
 sql >> Database >  >> RDS >> SQLite

Restituisce la fine del mese in SQLite

In SQLite, possiamo utilizzare il metodo seguente per calcolare l'ultimo giorno di un determinato mese.

Possiamo basarlo sulla data corrente o su un'altra data specifica.

Ultimo giorno del mese corrente

Ecco un esempio che restituisce l'ultimo giorno del mese corrente:

SELECT DATE('now', 'start of month', '+1 month', '-1 day');

Risultato:

2022-03-31

Questo utilizza il DATE() funzione per restituire i risultati desiderati. Il 'now' argomento restituisce la data corrente e 'start of month' argomento lo modifica all'inizio del mese. Quindi utilizziamo '+1 month' per aggiungere un mese all'inizio del mese (che lo sposterebbe in avanti all'inizio del mese successivo), quindi riduciamo quella data di un giorno (per riportarla alla fine del mese iniziale).

Ultimo giorno di un mese specifico

Ma come accennato, non ci limitiamo solo alla fine del mese in corso. Possiamo specificare qualsiasi data e restituirà la fine del mese, in base a quella data.

Ecco alcuni esempi:

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;

Risultato:

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

Possiamo vedere che SQLite è abbastanza intelligente da calcolare quanti giorni ci sono in ogni mese. Quando utilizziamo '+1 month' , SQLite sa quanti giorni ci sono in ogni mese. Possiamo vedere che febbraio ha 28 giorni, il 30 novembre e dicembre ne ha 31.

Se spostiamo la data originale in avanti al 2024, possiamo vedere che febbraio ha 29 giorni in quell'anno:

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;

Risultato:

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