SQLite understøtter fem funktioner til at arbejde med datoer og klokkeslæt. Disse er:
date()
time()
datetime()
julianday()
strftime()
Alle disse funktioner accepterer en tidsstreng som et argument. De accepterer også andre argumenter for at ændre/formatere outputtet.
strftime()
funktion er den mest alsidige funktion af de fem. Faktisk kan denne funktion alt, hvad de fire andre kan.
Med andre ord kan du bruge strftime()
for alle dine dato- og tidsformateringskrav. De andre fire funktioner er udelukkende tilgængelige for nemheds skyld.
Syntaks
Syntaksen for hver funktion er som følger:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
I de første fire funktioner er det første argument en tidsstreng, og alle efterfølgende argumenter er modifikatorer.
I strftime()
funktion det første argument er formatstrengen efterfulgt af tidsstrengen og eventuelle modifikatorer.
Alle gyldige tidsstrenge og modifikatorer er angivet i bunden af denne artikel.
Men lad os først gennemgå nogle hurtige eksempler på hver af disse funktioner.
Date()-funktionen
Du kan bruge date()
funktion med et argument eller med flere argumenter.
Her er et eksempel med kun ét argument:
SELECT date('now');
Resultat:
2020-04-23
Her er et eksempel, der bruger en modifikator:
SELECT date('now', 'localtime');
Resultat:
2020-04-24
I dette tilfælde brugte jeg localtime
modifikator. Denne modifikator antager, at tidsstrengen er i Universal Coordinated Time (UTC) og justerer tidsstrengen, så den viser lokal tid.
Time()-funktionen
time()
Funktionen ligner date()
funktion, bortset fra at den udsender klokkeslættet i stedet for datoen.
Her er et eksempel:
SELECT time('now');
Resultat:
00:02:05
Og her er det med localtime
modifikator:
SELECT time('now', 'localtime');
Resultat:
10:02:09
Datetime()-funktionen
SQLite datetime()
funktion kombinerer de to foregående funktioner i den forstand, at den udsender både dato og klokkeslæt.
Her er et eksempel:
SELECT datetime('now');
Resultat:
"2020-04-24 00:04:13"
Og her er det med localtime
modifikator:
SELECT datetime('now', 'localtime');
Resultat:
"2020-04-24 10:04:46"
Funktionen julianday()
julianday()
funktion returnerer det kontinuerlige antal dage siden begyndelsen af den julianske periode, som er mandag den 1. januar 4713 f.Kr., proleptisk juliansk kalender (24. november 4714 f.Kr., i den proleptiske gregorianske kalender).
Sådan ser det ud ved at bruge now
som tidsstreng:
SELECT julianday('now');
Resultat:
2458963.50964815
Og her bruger den localtime
modifikator:
SELECT julianday('now', 'localtime');
Resultat:
2458963.92637685
Strftime()-funktionen
Som nævnt er strftime()
funktion kan bruges til at udlæse dato- og tidsværdier i et hvilket som helst af de formater, der er tilgængelige i de tidligere funktioner.
Denne funktion giver dig mulighed for at være meget specifik med, hvordan dine dato/tidsværdier er formateret. Det giver dig mulighed for at angive det præcise format, som du ønsker det skal præsenteres.
Syntaksen for denne funktion ser sådan ud:
strftime(format, timestring, modifier, modifier, ...)
Bemærk, at det første argument er format
. Det er her, du angiver det format, som du ønsker, at tidsstrengen skal udskrives i.
Formatstrengen for strftime()
kan bestå af en hvilken som helst af følgende erstatninger:
%d | Dag i måneden:00 |
%f | Brøksekunder:SS.SSS |
%H | Tid:00-24 |
%j | Årets dag:001-366 |
%J | Julians dagnummer |
%m | Måned:01-12 |
%M | Minut:00-59 |
%s | Sekunder siden 1970-01-01 |
%S | Sekunder:00-59 |
%w | Ugedag 0-6 med søndag==0 |
%W | Uge i året:00-53 |
%Y | År:0000-9999 |
%% | % |
Her er et eksempel:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultat:
"2020-04-24 00:43:51"
I dette tilfælde får vi det samme resultat som ved brug af datetime()
funktion.
Her er den med localtime
modifikator:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
Resultat:
"2020-04-24 10:45:27"
Igen, samme resultat som med datetime()
. Forskellen er strftime()
sætter os i stand til eksplicit at angive formatet på outputtet.
For eksempel:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime');
Resultat:
"24/04/2020 10:49:41""04/24/2020 (10:52:24)""10:51:13 den 24/04/2020"
Gyldige tidsstrengformater
Tidsstrengargumentet i alle dato/tidsfunktioner kan leveres i et af følgende formater:
- ÅÅÅÅ-MM-DD
- ÅÅÅÅ-MM-DD TT:MM
- ÅÅÅÅ-MM-DD TT:MM:SS
- ÅÅÅÅ-MM-DD TT:MM:SS.SSS
- ÅÅÅÅ-MM-DDTHH:MM
- ÅÅÅÅ-MM-DDTHH:MM:SS
- ÅÅÅÅ-MM-DDTHH:MM:SS.SSS
- TT:MM
- TT:MM:SS
- TT:MM:SS.SSS
- nu
- DDDDDDDDDD
Gyldige modifikatorer
Du kan bruge enhver af følgende modifikatorer med dato/tidsfunktioner:
- NNN dage
- NNN timer
- NNN minutter
- NNN.NNNN sekunder
- NNN måneder
- NNN år
- begyndelsen af måneden
- start på året
- start på dagen
- ugedag N
- unixepoch
- lokal tid
- utc
N
refererer til et tal, der føjes til datoen, baseret på den angivne enhed.
For eksempel:
SELECT
date('now'),
date('now', '3 days');
Resultat:
date('now') date('now', '3 days')----------------------------- --2020-04-24 2020-04-27
Her er en, der bruger start of month
som modifikator:
SELECT
date('now'),
date('now', 'start of month');
Resultat:
date('now') date('now', 'start of month')----- ------------------ ----------2020-04-24 2020-04-01