V SQLite můžeme pro výpočet posledního dne daného měsíce použít následující metodu.
Můžeme to založit buď na aktuálním datu, nebo na nějakém jiném konkrétním datu.
Poslední den aktuálního měsíce
Zde je příklad, který vrací poslední den aktuálního měsíce:
SELECT DATE('now', 'start of month', '+1 month', '-1 day');
Výsledek:
2022-03-31
Toto používá DATE()
funkce vrátit výsledky, které chceme. 'now'
argument vrací aktuální datum a 'start of month'
argument jej upraví na začátek měsíce. Potom použijeme '+1 month'
abychom k začátku měsíce přidali měsíc (což by jej posunulo dopředu na začátek následujícího měsíce), pak toto datum zkrátíme o den (a vrátíme ho zpět na konec prvního měsíce).
Poslední den zadaného měsíce
Ale jak již bylo zmíněno, nejsme omezeni pouze na konec aktuálního měsíce. Můžeme zadat libovolné datum a vrátí se konec měsíce na základě tohoto data.
Zde je několik příkladů:
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;
Výsledek:
Vidíme, že SQLite je dostatečně chytrý na to, aby zjistil, kolik dní je v každém měsíci. Když použijeme '+1 month'
, SQLite ví, kolik dní je v každém měsíci. Vidíme, že únor má 28 dní, 30. listopad a prosinec 31.
Pokud původní datum posuneme dopředu na rok 2024, uvidíme, že únor má v tomto roce 29 dní:
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;
Výsledek: