SQLite har en time()
funktion, der giver dig mulighed for at returnere en tidsværdi baseret på en tidsstreng og eventuelle modifikatorer.
Den returnerer tiden i dette format:TT:MM:SS
For at bruge denne funktion skal du angive en tidsstreng plus eventuelle (valgfri) modifikatorer. En modifikator giver dig mulighed for at ændre tiden, såsom at tilføje et antal timer, indstille det til lokal tid osv.
Syntaks
Syntaksen for time()
funktionen går sådan her:
time(timestring, modifier, modifier, ...)
timestring
argumentet skal være en gyldig tidsstreng.
modifier
argumenter er valgfrie. Du kan angive en eller flere modifikatorer. Hvis du angiver en modifikator, skal den være en gyldig modifikator.
Eksempel
Her er et grundlæggende eksempel til at demonstrere time()
funktion, der bruges med ét argument.
SELECT time('now');
Resultat:
03:47:36
now
tidsstrengen konverteres til den aktuelle dato og klokkeslæt. Da jeg bruger time()
funktion, returneres kun tidsdelen.
Tilføj en modifikator
Vi kan ændre det tidligere resultat ved at bruge en modifikator. Her er et eksempel.
SELECT time('now', '+5 hours');
Resultat:
08:48:24
I dette tilfælde tilføjede jeg fem timer til tiden.
Flere modifikatorer
Som nævnt kan du tilføje en eller flere modifikatorer. Her er et eksempel på tilføjelse af en anden modifikator til det forrige eksempel.
SELECT time('now', '+5 hours', 'localtime');
Resultat:
18:50:08
localtime
modifikator antager, at den angivne tidsstreng er i Universal Coordinated Time (UTC). Den justerer derefter tidsstrengen, så den viser lokal tid.
Derfor kan du få et andet resultat, afhængigt af din lokale tid.
String Literal som tidsstrengen
Ovenstående eksempler bruger now
som tidsstreng, men du kan angive en hvilken som helst gyldig tidsstreng.
Her er et par andre eksempler.
SELECT time('1999-12-18 17:10:23');
Resultat:
17:10:23
I dette tilfælde fjerner den blot datodelen fra datoen.
tid() vs strftime()
time()
funktion returnerer nøjagtigt det samme resultat som strftime('%H:%M:%S', ...)
vender tilbage. time()
funktion er bare en mere bekvem måde at gøre det på.
SELECT
time('now'),
strftime('%H:%M:%S', 'now');
Resultat:
time('now') strftime('%H:%M:%S', 'now') ----------- --------------------------- 03:56:09 03:56:09
Datointerval
Som med alle SQLite dato- og tidsfunktioner, time()
virker kun for datoer mellem 0000-01-01 00:00:00 og 9999-12-31 23:59:59 (julian dag numre 1721059.5 til 5373484.5).
For datoer uden for dette interval er resultaterne udefinerede.