sql >> Databasteknik >  >> RDS >> SQLite

Returnera slutet av månaden i SQLite

I SQLite kan vi använda följande metod för att beräkna den sista dagen i en given månad.

Vi kan basera detta antingen på det aktuella datumet eller på något annat specifikt datum.

Sista dagen i den aktuella månaden

Här är ett exempel som returnerar den sista dagen i innevarande månad:

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

Resultat:

2022-03-31

Detta använder DATE() funktion för att returnera de resultat vi vill ha. 'now' argument returnerar det aktuella datumet och 'start of month' argument ändrar det till början av månaden. Vi använder sedan '+1 month' för att lägga till en månad till månadens början (vilket skulle flytta den framåt till början av följande månad), så minskar vi det datumet med en dag (för att få tillbaka det till slutet av den första månaden).

Sista dagen i en specificerad månad

Men som nämnt är vi inte begränsade till slutet av bara innevarande månad. Vi kan ange vilket datum som helst, och det återkommer i slutet av månaden, baserat på det datumet.

Här är några exempel:

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;

Resultat:

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

Vi kan se att SQLite är smart nog att räkna ut hur många dagar det är i varje månad. När vi använder '+1 month' , SQLite vet hur många dagar det är i varje månad. Vi kan se att februari har 28 dagar, 30 november och december har 31.

Om vi ​​flyttar fram det ursprungliga datumet till 2024 kan vi se att februari har 29 dagar det året:

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;

Resultat:

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

  1. MySQL och NoSQL:Hjälp mig att välja rätt

  2. Förstå kolumnalias i Select Query i SQL Server - SQL Server / TSQL självstudie del 115

  3. PostgreSQL:Ändra OWNER på alla tabeller samtidigt i PostgreSQL

  4. Hur skickar jag argument till ett PL/SQL-skript på kommandoraden med SQLPLUS?