De SQLite datetime()
Met deze functie kunt u een datum- en tijdwaarde retourneren op basis van een tijdreeks en eventuele modificaties.
Het geeft de datum terug in dit formaat:JJJJ-MM-DD UU:MM:SS
Om deze functie te gebruiken, moet u een tijdreeks opgeven, plus eventuele (optionele) modifiers. Met een modifier kunt u de datum wijzigen, zoals een aantal dagen toevoegen, instellen op lokale tijd, enz.
Syntaxis
De syntaxis gaat als volgt:
datetime(timestring, modifier, modifier, ...)
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 de datetime()
. te demonstreren functie wordt gebruikt met één argument.
SELECT datetime('now');
Resultaat:
2020-04-28 23:56:06
De now
tijdreeks wordt geconverteerd naar de huidige datum en tijd.
Een modificatie toevoegen
We kunnen het vorige resultaat wijzigen door een modifier te gebruiken. Hier is een voorbeeld.
SELECT datetime('now', '+3 hours');
Resultaat:
2020-04-29 02:56:52
In dit geval heb ik drie uur aan de tijd toegevoegd. Gezien de oorspronkelijke tijd resulteerde dit er ook in dat de datum naar de volgende dag werd verschoven.
Meerdere modificaties
Zoals vermeld, kunt u een of meer modifiers toevoegen. Hier is een voorbeeld van het toevoegen van een andere modifier aan het vorige voorbeeld.
SELECT datetime('now', '+3 hours', 'localtime');
Resultaat:
2020-04-29 12:58:13
In mijn geval, de localtime
modifier resulteerde in het vooruitschuiven van de tijd.
De reden dat het dit doet is 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.
Daarom kunt u, afhankelijk van uw lokale tijd, een ander resultaat krijgen.
Hier wordt opnieuw de oorspronkelijke lokale tijd vergeleken met het gewijzigde resultaat:
SELECT
datetime('now', 'localtime') AS "Local",
datetime('now', '+3 hours', 'localtime') AS "Modified";
Resultaat:
Local Modified ------------------- ------------------- 2020-04-29 10:02:09 2020-04-29 13:02:09
Datum als tijdreeks
De bovenstaande voorbeelden gebruiken now
als de tijdreeks, maar u kunt elke geldige tijdreeks opgeven.
Als u alleen het datumgedeelte opgeeft, wordt het tijdgedeelte op allemaal nullen gezet.
SELECT datetime('2010-08-15');
Resultaat:
2010-08-15 00:00:00
Als alleen het tijdgedeelte wordt opgegeven, wordt de datum op 01-01-2000 gezet.
SELECT datetime('23:58:57');
Resultaat:
2000-01-01 23:58:57
Hier is een voorbeeld dat de Juliaanse dag als tijdreeks gebruikt.
SELECT datetime('2451545.49927083');
Resultaat:
2000-01-01 23:58:57
datetime() vs strftime()
De datetime()
functie geeft exact hetzelfde resultaat als strftime('%Y-%m-%d %H:%M:%S', ...)
geeft terug. De datetime()
functie is gewoon een handiger manier om het te doen.
SELECT
datetime('now'),
strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultaat:
datetime('now') strftime('%Y-%m-%d %H:%M:%S', 'now') ------------------- ------------------------------------ 2020-04-29 00:16:12 2020-04-29 00:16:12
Datumbereik
Zoals met alle SQLite datum- en tijdfuncties, datetime()
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.