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.SSSCode 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ů.