sql >> Databasteknik >  >> RDS >> SQLite

Hur Strftime()-funktionen fungerar i SQLite

SQLite strftime() funktionen gör att du kan returnera ett datum- och tidsvärde i ett specificerat format.

Det faktiska datum/tid-värdet som returneras är baserat på en tidssträng som du anger som ett argument när du anropar funktionen, såväl som eventuella modifierare du inkluderar (som valfria argument). En modifierare låter dig ändra datumet, som att lägga till ett antal dagar, ställa in det på lokal tid, etc.

Syntax

Syntaxen ser ut så här:

strftime(format, timestring, modifier, modifier, ...)

format argument kan vara valfri kombination av giltiga formatsträngsersättningar för strftime() funktion.

timestring argumentet måste vara en giltig tidssträng.

modifier argument är valfria. Du kan tillhandahålla en eller flera modifierare. Om du tillhandahåller en modifierare måste den vara en giltig modifierare.

Exempel

Här är ett exempel att visa.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

Resultat:

2020-04-29 01:29:54

now tidssträngen konverteras till aktuellt datum och tid, baserat på den angivna formatsträngen.

I det här fallet returnerar min formatsträng exakt samma resultat som datetime('now') skulle ha återvänt.

Lägg till en modifierare

Vi kan modifiera det tidigare resultatet genom att använda en modifierare. Här är ett exempel.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');

Resultat:

2020-04-29 03:31:50

I det här fallet lade jag till två timmar till tiden.

Flera modifierare

Du kan lägga till flera modifierare. Här är ett exempel på att lägga till ytterligare en modifierare till föregående exempel.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

Resultat:

2020-04-29 13:33:22

I mitt fall, localtime modifieraren ledde till att tiden flyttades fram.

Detta beror på att localtime modifieraren antar att tidssträngen som tillhandahålls är i Universal Coordinated Time (UTC). Den justerar sedan tidssträngen så att den visar lokal tid.

Du kan få ett annat resultat, beroende på din lokala tid.

Här jämförs återigen den ursprungliga lokala tiden med det modifierade resultatet:

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";

Resultat:

Local                Modified           
-------------------  -------------------
2020-04-29 11:34:57  2020-04-29 13:34:57

Unix/Epoktid

Du kan använda %s formatera sträng (gemener) för att beräkna epoktid.

SELECT strftime('%s', 'now');

Resultat:

1588124826

Epoktid (även känd som epoktid, POSIX-tid, sekunder sedan epoken eller UNIX-epoktid) är antalet sekunder sedan 1970-01-01.

Unix-tid används ofta i operativsystem och filformat.

Juliandagen

Du kan använda %J för att återvända Julian Day.

Julian Day är antalet dagar sedan middagstid i Greenwich den 24 november 4714 f.Kr. (med den proleptiska gregorianska kalendern).

Om du använder den proleptiska julianska kalendern är detta måndagen den 1 januari 4713 f.Kr.

Julian day används vanligtvis av astronomer, programvara etc för att beräkna förflutna dagar mellan två händelser.

Så här returnerar du Julian Day med strftime() funktion.

SELECT strftime('%J', 'now');

Resultat:

2458968.575441667               

Ett annat sätt att göra detta i SQLite är att använda julianday() funktion.

Datumintervall

Som med alla SQLites datum- och tidsfunktioner, strftime() fungerar endast för datum mellan 0000-01-01 00:00:00 och 9999-12-31 23:59:59 (julian dagnummer 1721059.5 till 5373484.5).

För datum utanför det intervallet är resultaten odefinierade.


  1. World Backup Day:Hur och när ska du säkerhetskopiera din databas?

  2. Alternativt utdataformat för psql

  3. Använd MySQL relationsdatabaser på Debian 5 (Lenny)

  4. Utför Insert-kommandot och returnera infogat Id i Sql