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.SSS
Code 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.