sql >> Databasteknik >  >> RDS >> SQLite

Hur DateTime()-funktionen fungerar i SQLite

SQLite datetime() funktionen gör att du kan returnera ett datum- och tidsvärde baserat på en tidssträng och eventuella modifierare.

Den returnerar datumet i detta format:ÅÅÅÅ-MM-DD TT:MM:SS

För att använda den här funktionen måste du tillhandahålla en tidssträng, plus eventuella (valfria) modifierare. 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:

datetime(timestring, modifier, modifier, ...)

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 för att demonstrera datetime() funktion som används med ett argument.

SELECT datetime('now');

Resultat:

2020-04-28 23:56:06

now tidssträngen omvandlas till aktuellt datum och tid.

Lägg till en modifierare

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

SELECT datetime('now', '+3 hours');

Resultat:

2020-04-29 02:56:52

I det här fallet lade jag till tre timmar till tiden. Med tanke på den ursprungliga tiden resulterade detta också i att datumet flyttades fram till nästa dag.

Flera modifierare

Som nämnts kan du lägga till en eller flera modifierare. Här är ett exempel på att lägga till ytterligare en modifierare till föregående exempel.

SELECT datetime('now', '+3 hours', 'localtime');

Resultat:

2020-04-29 12:58:13

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

Anledningen till att den gör detta är 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.

Därför kan du få ett annat resultat, beroende på din lokala tid.

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

SELECT 
  datetime('now', 'localtime') AS "Local",
  datetime('now', '+3 hours', 'localtime') AS "Modified";

Resultat:

Local                Modified           
-------------------  -------------------
2020-04-29 10:02:09  2020-04-29 13:02:09

Datum som tidssträng

Exemplen ovan använder now som tidssträng, men du kan ange vilken giltig tidssträng som helst.

Om du bara anger datumdelen kommer tidsdelen att ställas in på alla nollor.

SELECT datetime('2010-08-15');

Resultat:

2010-08-15 00:00:00

Om endast tidsdelen tillhandahålls, är datumet satt till 2000-01-01.

SELECT datetime('23:58:57');

Resultat:

2000-01-01 23:58:57

Här är ett exempel som använder Julian Day som tidssträng.

SELECT datetime('2451545.49927083');

Resultat:

2000-01-01 23:58:57

datetime() vs strftime()

datetime() funktion returnerar exakt samma resultat som strftime('%Y-%m-%d %H:%M:%S', ...) returnerar. datetime() funktion är bara ett bekvämare sätt att göra det på.

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

Resultat:

datetime('now')      strftime('%Y-%m-%d %H:%M:%S', 'now')
-------------------  ------------------------------------
2020-04-29 00:16:12  2020-04-29 00:16:12                 

Datumintervall

Som med alla SQLites datum- och tidsfunktioner, datetime() 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. Hur RTRIM() fungerar i MariaDB

  2. Hur man avrundar tal i SQL

  3. UTL_FILE.FREMOVE Exempel:Ta bort en fil i Oracle

  4. PostgreSQL Column existerar inte men det gör den faktiskt