SQLite strftime()
funktionen giver dig mulighed for at returnere en dato- og tidsværdi i et specificeret format.
Den faktiske dato/tidsværdi, der returneres, er baseret på en tidsstreng, som du angiver som et argument, når du kalder funktionen, samt eventuelle modifikatorer, du inkluderer (som valgfri argumenter). En modifikator giver dig mulighed for at ændre datoen, såsom tilføje et antal dage, indstille den til lokal tid osv.
Syntaks
Syntaksen ser sådan ud:
strftime(format, timestring, modifier, modifier, ...)
format
argument kan være en hvilken som helst kombination af gyldige formatstrengerstatninger for strftime()
funktion.
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 eksempel til at demonstrere.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultat:
2020-04-29 01:29:54
now
tidsstrengen konverteres til den aktuelle dato og klokkeslæt baseret på den angivne formatstreng.
I dette tilfælde returnerer min formatstreng nøjagtig det samme resultat som datetime('now')
ville være vendt tilbage.
Tilføj en modifikator
Vi kan ændre det tidligere resultat ved at bruge en modifikator. Her er et eksempel.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Resultat:
2020-04-29 03:31:50
I dette tilfælde tilføjede jeg to timer til tiden.
Flere modifikatorer
Du kan tilføje flere modifikatorer. Her er et eksempel på tilføjelse af en anden modifikator til det forrige eksempel.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Resultat:
2020-04-29 13:33:22
I mit tilfælde er localtime
modifikator resulterede i, at tiden blev rykket frem.
Dette skyldes, at localtime
modifikator antager, at den angivne tidsstreng er i Universal Coordinated Time (UTC). Den justerer derefter tidsstrengen, så den viser lokal tid.
Du får muligvis et andet resultat, afhængigt af din lokale tid.
Her sammenlignes igen den oprindelige lokale tid med det ændrede resultat:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Resultat:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Unix/Epoketid
Du kan bruge %s
format streng (små bogstaver) for at beregne epoketid.
SELECT strftime('%s', 'now');
Resultat:
1588124826
Epoketid (også kendt som epoketid, POSIX-tid, sekunder siden epoken eller UNIX-epoketid) er antallet af sekunder siden 1970-01-01.
Unix-tid er meget brugt i operativsystemer og filformater.
Juliens dag
Du kan bruge %J
at returnere den julianske dag.
Julian Day er antallet af dage siden middagstid i Greenwich den 24. november 4714 f.v.t. (ved hjælp af den proleptiske gregorianske kalender).
Hvis du bruger den proleptiske julianske kalender, er dette mandag den 1. januar 4713 f.Kr.
Juliansk dag bruges typisk af astronomer, software osv. til at beregne forløbne dage mellem to begivenheder.
Sådan returnerer du den julianske dag med strftime()
funktion.
SELECT strftime('%J', 'now');
Resultat:
2458968.575441667
En anden måde at gøre dette på i SQLite er at bruge julianday()
funktion.
Datointerval
Som med alle SQLite-dato- og tidsfunktioner, strftime()
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.