sql >> Databáze >  >> RDS >> SQLite

Vraťte konec měsíce v SQLite

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:


  1. Proč SQL Server ztrácí milisekundu?

  2. SQL Server Collection Inventory Script -1

  3. Výběr náhodných řádků pomocí MySQL

  4. SQL WHERE.. IN klauzule více sloupců