SQLite heeft een date()
functie waarmee u een datumwaarde kunt retourneren op basis van een tijdreeks en eventuele modificaties.
Het geeft de datum terug in dit formaat:JJJJ-MM-DD
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 van de date()
functie gaat als volgt:
date(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 date()
te demonstreren functie wordt gebruikt met één argument.
SELECT date('now');
Resultaat:
2020-04-27
De now
tijdreeks wordt geconverteerd naar de huidige datum en tijd. Aangezien ik de date()
. gebruik functie, wordt alleen de datum geretourneerd.
Een modificatie toevoegen
We kunnen het vorige resultaat wijzigen door een modifier te gebruiken. Hier is een voorbeeld.
SELECT date('now', '+6 months');
Resultaat:
2020-10-27
In dit geval heb ik zes maanden aan de datum toegevoegd.
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 date('now', '+6 months', 'localtime');
Resultaat:
2020-10-28
In mijn geval, de localtime
modifier resulteerde in het toevoegen van een dag aan de datum.
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.
Letterlijke tekenreeks als de tijdreeks
De bovenstaande voorbeelden gebruiken now
als de tijdreeks, maar u kunt elke geldige tijdreeks opgeven.
Hier zijn een paar andere voorbeelden.
SELECT date('2020-04-27 23:58:57');
Resultaat:
2020-04-27
In dit geval verwijdert het eenvoudig het tijdgedeelte van de datum.
Hier is het weer, maar met enkele aanpassingen.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
Resultaat:
2020-07-01
In dit geval wilde ik de datum krijgen die 6 maanden vanaf het begin van het jaar van de opgegeven datum is.
Hier is een voorbeeld dat de Juliaanse dag als tijdreeks gebruikt.
SELECT date('2458967.49737293');
Resultaat:
2020-04-27
date() vs strftime()
De date()
functie geeft exact hetzelfde resultaat als strftime('%Y-%m-%d', ...)
geeft terug. De date()
functie is gewoon een handiger manier om het te doen.
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
Resultaat:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
Datumbereik
Zoals met alle SQLite datum- en tijdfuncties, date()
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.