sql >> Database >  >> RDS >> SQLite

Hoe de functie StRFtime() werkt in SQLite

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.


  1. Corrupt SQL-database repareren tijdens upgradeprobleem

  2. Is er een manier om een ​​query uit te voeren binnen de tekenreekswaarde (zoals eval) in PostgreSQL?

  3. Bestanden opslaan in SQL Server

  4. Maak een externe sleutel in SQLite