Shrnutí :v tomto tutoriálu vám ukážeme, jak pracovat s hodnotami data a času SQLite a jak používat vestavěné funkce data a času ke zpracování hodnot data a času.
SQLite nepodporuje vestavěnou třídu ukládání data a/nebo času. Místo toho využívá některé vestavěné funkce data a času k použití jiných tříd úložiště, jako je TEXT
, REAL
nebo INTEGER
pro uložení hodnot data a času.
Pomocí TEXT
storage class pro ukládání data a času SQLite
Pokud použijete TEXT
storage class pro uložení hodnoty data a času, musíte použít formát řetězce ISO8601 následovně:
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
Například 2016-01-01 10:20:05.123
Nejprve vytvořte novou tabulku s názvem datetime_text
pro demonstraci.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Tabulka obsahuje dva sloupce d1
a d2
s TEXT
datový typ.
Chcete-li vložit hodnoty data a času do datetime_text
tabulky, použijete DATETIME
funkce.
Chcete-li například získat aktuální hodnotu data a času UTC, předáte funkci doslovný řetězec now takto:
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Chcete-li získat místní čas, předáte další argument localtime
.
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Za druhé vložte hodnoty data a času do datetime_text
tabulka takto:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Za třetí, dotazujte se na data z datetime_text
tabulka.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Pomocí REAL
storage class pro ukládání hodnot data a času SQLite
Můžete použít REAL
třída úložiště pro uložení hodnot data a/nebo času jako čísla juliánského dne, což je počet dní od poledne v Greenwichi 24. listopadu 4714 př. na základě proleptického gregoriánského kalendáře.
Podívejme se na příklad použití třídy úložiště REAL k ukládání hodnot data a času.
Nejprve vytvořte novou tabulku s názvem datetime_real
.
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Za druhé, vložte „aktuální“ hodnotu data a času do datetime_real
tabulka.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Použili jsme julianday()
funkce pro převod aktuálního data a času na juliánský den.
Za třetí, dotazujte se na data z datetime_real
tabulka.
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Výstup není čitelný pro člověka.
Naštěstí můžete použít vestavěný date()
a time()
funkce pro formátování hodnoty data a času následovně:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Pomocí INTEGER
k ukládání hodnot data a času SQLite
Kromě TEXT
a REAL
třídy úložiště, můžete použít INTEGER
storage class pro uložení hodnot data a času.
Obvykle používáme INTEGER
pro uložení času UNIX, což je počet sekund od 1970-01-01 00:00:00 UTC
. Viz následující příklad:
Nejprve vytvořte tabulku s jedním sloupcem, jehož datový typ je INTEGER
pro uložení hodnot data a času.
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Za druhé, vložte aktuální hodnotu data a času do datetime_int
tabulka.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Za třetí, dotazujte se na data z datetime_int
tabulka.
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Je to celé číslo.
K formátování výsledku můžete použít vestavěný datetime()
fungovat následovně:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Pomocí SQLite si můžete libovolně vybrat libovolné datové typy pro uložení hodnot data a času a použít vestavěnou funkci data a času pro převod mezi formáty.
Chcete-li získat podrobné informace o funkcích data a času SQLite, podívejte se na vestavěné funkce data a času.
V tomto tutoriálu jste se naučili používat TEXT
, REAL
a INTEGER
třídy úložiště pro ukládání hodnot data a času. Kromě toho jste se naučili, jak používat vestavěné funkce data a času k převodu uložených hodnot data a času do čitelných formátů.