sql >> Databasteknik >  >> RDS >> SQLite

SQLite datum och tid funktioner

SQLite stöder fem funktioner för att arbeta med datum och tider. Dessa är:

  • date()
  • time()
  • datetime()
  • julianday()
  • strftime()

Alla dessa funktioner accepterar en tidssträng som ett argument. De accepterar även andra argument för att modifiera/formatera utdata.

strftime() funktion är den mest mångsidiga funktionen av de fem. Faktum är att den här funktionen kan göra allt de andra fyra kan.

Med andra ord kan du använda strftime() för alla dina datum- och tidsformateringskrav. De övriga fyra funktionerna är tillgängliga endast för bekvämlighets skull.

Syntax

Syntaxen för varje funktion är som följer:

date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)

I de första fyra funktionerna är det första argumentet en tidssträng, och alla efterföljande argument är modifierare.

I strftime() funktion det första argumentet är formatsträngen, följt av tidssträngen och eventuella modifierare.

Alla giltiga tidssträngar och modifierare listas längst ner i den här artikeln.

Men låt oss först gå igenom några snabba exempel på var och en av dessa funktioner.

Date()-funktionen

Du kan använda date() funktion med ett argument eller med flera argument.

Här är ett exempel med bara ett argument:

SELECT date('now');

Resultat:

2020-04-23

Här är ett exempel som använder en modifierare:

SELECT date('now', 'localtime');

Resultat:

2020-04-24

I det här fallet använde jag localtime modifierare. Den här modifieraren förutsätter att tidssträngen är i Universal Coordinated Time (UTC) och justerar tidssträngen så att den visar lokal tid.

Time()-funktionen

time() funktionen liknar date() funktion, förutom att den matar ut tiden istället för datumet.

Här är ett exempel:

SELECT time('now');

Resultat:

00:02:05

Och här är den med localtime modifierare:

SELECT time('now', 'localtime');

Resultat:

10:02:09

Datetime()-funktionen

SQLite datetime() funktion kombinerar de två föregående funktionerna, i den meningen att den matar ut både datum och tid.

Här är ett exempel:

SELECT datetime('now');

Resultat:

"2020-04-24 00:04:13"

Och här är den med localtime modifierare:

SELECT datetime('now', 'localtime');

Resultat:

"2020-04-24 10:04:46"

Funktionen julianday()

julianday() funktion returnerar det kontinuerliga antalet dagar sedan början av den julianska perioden, vilket är måndagen den 1 januari 4713 f.Kr., proleptisk juliansk kalender (24 november 4714 f.Kr., i den proleptiska gregorianska kalendern).

Så här ser det ut med now som tidssträng:

SELECT julianday('now');

Resultat:

2458963.50964815

Och här använder den localtime modifierare:

SELECT julianday('now', 'localtime');

Resultat:

2458963.92637685

Strftime()-funktionen

Som nämnts, strftime() funktionen kan användas för att mata ut datum- och tidsvärden i vilket format som helst som är tillgängliga i de tidigare funktionerna.

Denna funktion låter dig vara mycket specifik med hur dina datum-/tidsvärden formateras. Det gör att du kan ange det exakta format som du vill att det ska presenteras på.

Syntaxen för denna funktion ser ut så här:

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

Lägg märke till att det första argumentet är format . Det är här du anger formatet som du vill att tidssträngen ska matas ut i.

Formatsträngen för strftime() kan bestå av någon av följande ersättningar:

%d Dag i månaden:00
%f Bråkdelar av sekunder:SS.SSS
%H Timme:00-24
%j Årets dag:001-366
%J Julians dagnummer
%m Månad:01-12
%M Minut:00-59
%s Sekunder sedan 1970-01-01
%S Sekunder:00-59
%w Veckodag 0-6 med söndag==0
%W Vecka på året:00-53
%Y År:0000-9999
%% %

Här är ett exempel:

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

Resultat:

"2020-04-24 00:43:51"

I det här fallet får vi samma resultat som när vi använder datetime() funktion.

Här är den med localtime modifierare:

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

Resultat:

"2020-04-24 10:45:27"

Återigen, samma resultat som med datetime() . Skillnaden är strftime() gör det möjligt för oss att uttryckligen ange formatet för utdata.

Till exempel:

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

Resultat:

"24/04/2020 10:49:41"
"04/24/2020 (10:52:24)"
"10:51:13 on 24/04/2020"

Giltigt tidssträngsformat

Argumentet för tidssträngen i alla datum/tid-funktioner kan tillhandahållas i något av följande format:

  • ÅÅÅÅ-MM-DD
  • ÅÅÅÅ-MM-DD TT:MM
  • ÅÅÅÅ-MM-DD TT:MM:SS
  • ÅÅÅÅ-MM-DD TT:MM:SS.SSS
  • ÅÅÅÅ-MM-DDTHH:MM
  • ÅÅÅÅ-MM-DDTHH:MM:SS
  • ÅÅÅÅ-MM-DDTHH:MM:SS.SSS
  • TT:MM
  • TT:MM:SS
  • TT:MM:SS.SSS
  • nu
  • DDDDDDDDDD

Giltig modifierare

Du kan använda någon av följande modifierare med datum/tid-funktioner:

  • NNN dagar
  • NNN timmar
  • NNN minuter
  • NNN.NNNN sekunder
  • NNN månader
  • NNN år
  • början av månaden
  • början av året
  • start på dagen
  • veckodag N
  • unixepoch
  • lokal tid
  • utc

N hänvisar till ett nummer som läggs till datumet, baserat på den angivna enheten.

Till exempel:

SELECT 
  date('now'), 
  date('now', '3 days');

Resultat:

date('now')  date('now', '3 days')
-----------  ---------------------
2020-04-24   2020-04-27           

Här är en som använder start of month som modifierare:

SELECT 
  date('now'), 
  date('now', 'start of month');

Resultat:

date('now')  date('now', 'start of month')
-----------  -----------------------------
2020-04-24   2020-04-01                   

  1. Varför inga fönsterfunktioner i where-satser?

  2. Apache Spark ODBC-drivrutinen

  3. Mysql eller/och prioritet?

  4. Interner i de sju SQL-serversorterna – Del 1