sql >> Databasteknik >  >> RDS >> SQLite

SQLite datum och tid

Sammanfattning :i denna handledning kommer vi att visa dig hur du arbetar med SQLites datum- och tidsvärden och använder de inbyggda datum- och tidsfunktionerna för att hantera datum- och tidsvärden.

SQLite stöder inte inbyggd datum- och/eller tidslagringsklass. Istället använder den vissa inbyggda datum- och tidsfunktioner för att använda andra lagringsklasser som TEXT , REAL , eller INTEGER för att lagra datum- och tidsvärden.

Använda TEXT lagringsklass för lagring av SQLite-datum och tid

Om du använder TEXT lagringsklass för att lagra datum och tidsvärde måste du använda ISO8601-strängformatet enligt följande:

YYYY-MM-DD HH:MM:SS.SSSCode language: SQL (Structured Query Language) (sql)

Till exempel, 2016-01-01 10:20:05.123

Skapa först en ny tabell med namnet datetime_text för demonstration.

CREATE TABLE datetime_text(
   d1 text, 
   d2 text
);Code language: SQL (Structured Query Language) (sql)

Prova det

Tabellen innehåller två kolumner d1 och d2 med TEXT datatyp.

För att infoga datum- och tidsvärden i datetime_text tabell använder du DATETIME funktion.

Till exempel, för att få aktuellt UTC-datum och -tidsvärde skickar du den nu bokstavliga strängen till funktionen enligt följande:

SELECT datetime('now');Code language: SQL (Structured Query Language) (sql)

Prova det

För att få lokal tid skickar du ett extra argument localtime .

SELECT datetime('now','localtime');Code language: SQL (Structured Query Language) (sql)

Prova det

För det andra, infoga datum- och tidsvärdena i datetime_text tabell enligt följande:

INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));Code language: SQL (Structured Query Language) (sql)

Prova det

För det tredje, fråga efter data från datetime_text bord.

SELECT
	d1,
	typeof(d1),
	d2,
	typeof(d2)
FROM
	datetime_text;Code language: SQL (Structured Query Language) (sql)

Prova det

Använder REAL lagringsklass för att lagra SQLites datum- och tidsvärden

Du kan använda REAL lagringsklass för att lagra datum- och/eller tidsvärden som julianska dagnummer, vilket är antalet dagar sedan middagstid i Greenwich den 24 november 4714 f.Kr. baserad på den proleptiska gregorianska kalendern.

Låt oss ta en titt på ett exempel på hur lagringsklassen REAL används för att lagra datum- och tidsvärden.

Skapa först en ny tabell med namnet datetime_real .

CREATE TABLE datetime_real(
   d1 real
);Code language: SQL (Structured Query Language) (sql)

Prova det

För det andra, infoga det "aktuella" datum- och tidsvärdet i datetime_real bord.

INSERT INTO datetime_real (d1)
VALUES(julianday('now'));Code language: SQL (Structured Query Language) (sql)

Prova det

Vi använde julianday() funktion för att konvertera det aktuella datumet och tiden till den julianska dagen.

För det tredje, fråga data från datetime_real bord.

SELECT d1 FROM datetime_real;Code language: SQL (Structured Query Language) (sql)

Prova det

Utdata är inte läsbar för människor.

Lyckligtvis kan du använda den inbyggda date() och time() funktioner för att formatera ett datum- och tidsvärde enligt följande:

SELECT
	date(d1),
	time(d1)
FROM
	datetime_real;Code language: SQL (Structured Query Language) (sql)

Prova det

Med INTEGER för att lagra SQLites datum- och tidsvärden

Förutom TEXT och REAL lagringsklasser kan du använda INTEGER lagringsklass för att lagra datum- och tidsvärden.

Vi använder vanligtvis INTEGER för att lagra UNIX-tid som är antalet sekunder sedan 1970-01-01 00:00:00 UTC . Se följande exempel:

Skapa först en tabell som har en kolumn vars datatyp är INTEGER för att lagra datum- och tidsvärden.

CREATE TABLE datetime_int (d1 int);Code language: SQL (Structured Query Language) (sql)

Prova det

För det andra, infoga det aktuella datum- och tidsvärdet i datetime_int bord.

INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));Code language: SQL (Structured Query Language) (sql)

Prova det

För det tredje, fråga data från datetime_int bord.

SELECT d1 FROM datetime_int;Code language: SQL (Structured Query Language) (sql)

Prova det

Det är ett heltal.

För att formatera resultatet kan du använda den inbyggda datetime() fungerar enligt följande:

SELECT datetime(d1,'unixepoch')
FROM datetime_int;Code language: SQL (Structured Query Language) (sql)

Prova det

Med SQLite kan du fritt välja vilken datatyp som helst för att lagra datum- och tidsvärden och använda den inbyggda funktionen för datum och tid för att konvertera mellan format.

För detaljerad information om SQLite datum och tid funktioner, kolla in de inbyggda datum och tid funktioner.

I den här handledningen har du lärt dig hur du använder TEXT , REAL och INTEGER lagringsklasser för att lagra datum- och tidsvärden. Dessutom lärde du dig hur du använder de inbyggda datum- och tidsfunktionerna för att konvertera de lagrade datum- och tidsvärdena till läsbara format.


  1. Hur man skapar ett beräknat fält i en Microsoft Access-fråga

  2. MySQL:s alternativ till T-SQL:s MED BAND

  3. Best Practices för PostgreSQL-replikering - Del 2

  4. Fel syntax nära "GO"