sql >> Database >  >> RDS >> SQLite

Hoe de DateTime()-functie werkt in SQLite

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.


  1. Hoe SQL Server op Red Hat 8 te installeren

  2. Galera-cluster uitvoeren op Kubernetes

  3. Oracle INTERSECT-operator uitgelegd

  4. Download een kopie van uw database