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.