sql >> Database >  >> RDS >> SQLite

Hoe de Date()-functie werkt in SQLite

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.


  1. Hoe u de datum van gisteren in T-SQL kunt krijgen

  2. Grondbeginselen van tabeluitdrukkingen, deel 9 – Weergaven, vergeleken met afgeleide tabellen en CTE's

  3. Hoe Pi() werkt in PostgreSQL

  4. SQL Server 2016:Verbeteringen voor beschikbaarheidsgroepen