De SQLite strftime()
functie stelt u in staat om een datum- en tijdwaarde in een gespecificeerd formaat te retourneren.
De werkelijke datum/tijd-waarde die wordt geretourneerd, is gebaseerd op een tijdreeks die u als argument opgeeft wanneer u de functie aanroept, evenals op eventuele modifiers die u opneemt (als optionele argumenten). Met een modifier kunt u de datum wijzigen, zoals een aantal dagen toevoegen, instellen op lokale tijd, enz.
Syntaxis
De syntaxis gaat als volgt:
strftime(format, timestring, modifier, modifier, ...)
Het format
argument kan elke combinatie zijn van geldige formaatreeksvervangingen voor de strftime()
functie.
De timestring
argument moet een geldige tijdreeks zijn.
De modifier
argumenten zijn optioneel. U kunt een of meer modifiers opgeven. Als je een modifier opgeeft, moet het een geldige modifier zijn.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultaat:
2020-04-29 01:29:54
De now
tijdreeks wordt geconverteerd naar de huidige datum en tijd, op basis van de verstrekte notatiereeks.
In dit geval geeft mijn format string exact hetzelfde resultaat als datetime('now')
zou zijn teruggekeerd.
Een modificatie toevoegen
We kunnen het vorige resultaat wijzigen door een modifier te gebruiken. Hier is een voorbeeld.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Resultaat:
2020-04-29 03:31:50
In dit geval heb ik twee uur aan de tijd toegevoegd.
Meerdere modificaties
U kunt meerdere modifiers toevoegen. Hier is een voorbeeld van het toevoegen van een andere modifier aan het vorige voorbeeld.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Resultaat:
2020-04-29 13:33:22
In mijn geval, de localtime
modifier resulteerde in het vooruitschuiven van de tijd.
Dit komt omdat de localtime
modifier gaat ervan uit dat de opgegeven tijdreeks in Universal Coordinated Time (UTC) is. Vervolgens wordt de tijdreeks aangepast zodat de lokale tijd wordt weergegeven.
Afhankelijk van uw lokale tijd krijgt u mogelijk een ander resultaat.
Hier wordt opnieuw de oorspronkelijke lokale tijd vergeleken met het gewijzigde resultaat:
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";
Resultaat:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Unix/Epoch-tijd
U kunt de %s
. gebruiken format string (kleine letters) om epoche tijd te berekenen.
SELECT strftime('%s', 'now');
Resultaat:
1588124826
Epoch-tijd (ook bekend als Epoch-tijd, POSIX-tijd, seconden sinds de Epoch of UNIX Epoch-tijd) is het aantal seconden sinds 1970/01/01.
Unix-tijd wordt veel gebruikt in besturingssystemen en bestandsindelingen.
Juliaanse dag
U kunt %J
. gebruiken om de Juliaanse Dag terug te geven.
Julian Day is het aantal dagen sinds het middaguur in Greenwich op 24 november 4714 v. Chr. (met behulp van de Proleptische Gregoriaanse kalender).
Als u de proleptische Juliaanse kalender gebruikt, is dit maandag 1 januari 4713 v.Chr.
Juliaanse dag wordt meestal gebruikt door astronomen, software, enz. om de verstreken dagen tussen twee gebeurtenissen te berekenen.
Hier leest u hoe u de Juliaanse dag kunt retourneren met de strftime()
functie.
SELECT strftime('%J', 'now');
Resultaat:
2458968.575441667
Een andere manier om dit in SQLite te doen, is door de julianday()
. te gebruiken functie.
Datumbereik
Zoals met alle SQLite-datum- en tijdfuncties, strftime()
werkt alleen voor datums tussen 0000-01-01 00:00:00 en 9999-12-31 23:59:59 (julian-dagnummers 1721059.5 t/m 5373484.5).
Voor datums buiten dat bereik zijn de resultaten niet gedefinieerd.