SQLite har en date()
funktion som gör att du kan returnera ett datumvärde baserat på en tidssträng och eventuella modifierare.
Den returnerar datumet i detta format:ÅÅÅÅ-MM-DD
För att använda den här funktionen måste du tillhandahålla en tidssträng, plus eventuella (valfria) modifierare. En modifierare låter dig ändra datumet, som att lägga till ett antal dagar, ställa in det på lokal tid, etc.
Syntax
Syntaxen för date()
funktionen går så här:
date(timestring, modifier, modifier, ...)
timestring
argumentet måste vara en giltig tidssträng.
modifier
argument är valfria. Du kan tillhandahålla en eller flera modifierare. Om du tillhandahåller en modifierare måste den vara en giltig modifierare.
Exempel
Här är ett exempel för att visa date()
funktion som används med ett argument.
SELECT date('now');
Resultat:
2020-04-27
now
tidssträngen omvandlas till aktuellt datum och tid. Eftersom jag använder date()
funktion, endast datumet returneras.
Lägg till en modifierare
Vi kan modifiera det tidigare resultatet genom att använda en modifierare. Här är ett exempel.
SELECT date('now', '+6 months');
Resultat:
2020-10-27
I det här fallet lade jag till sex månader till datumet.
Flera modifierare
Som nämnts kan du lägga till en eller flera modifierare. Här är ett exempel på att lägga till ytterligare en modifierare till föregående exempel.
SELECT date('now', '+6 months', 'localtime');
Resultat:
2020-10-28
I mitt fall, localtime
modifierare resulterade i att en dag lades till på datumet.
Anledningen till att den gör detta är att localtime
modifieraren antar att tidssträngen som tillhandahålls är i Universal Coordinated Time (UTC). Den justerar sedan tidssträngen så att den visar lokal tid.
Därför kan du få ett annat resultat, beroende på din lokala tid.
Sträng bokstavlig som tidssträng
Exemplen ovan använder now
som tidssträng, men du kan ange vilken giltig tidssträng som helst.
Här är några andra exempel.
SELECT date('2020-04-27 23:58:57');
Resultat:
2020-04-27
I det här fallet tar den helt enkelt bort tidsdelen från datumet.
Här är den igen, men med några modifierare.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
Resultat:
2020-07-01
I det här fallet ville jag få datumet som är 6 månader från början av året för det angivna datumet.
Här är ett exempel som använder Julian Day som tidssträng.
SELECT date('2458967.49737293');
Resultat:
2020-04-27
date() vs strftime()
date()
funktion returnerar exakt samma resultat som strftime('%Y-%m-%d', ...)
returnerar. date()
funktion är bara ett bekvämare sätt att göra det på.
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
Resultat:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
Datumintervall
Som med alla SQLites datum- och tidsfunktioner, date()
fungerar endast för datum mellan 0000-01-01 00:00:00 och 9999-12-31 23:59:59 (julian dagnummer 1721059.5 till 5373484.5).
För datum utanför det intervallet är resultaten odefinierade.