Samenvatting :in deze zelfstudie laten we u zien hoe u met de SQLite-datum- en tijdwaarden werkt en de ingebouwde datum- en tijdfuncties gebruikt om datum- en tijdwaarden te verwerken.
SQLite ondersteunt geen ingebouwde datum- en/of tijdopslagklasse. In plaats daarvan maakt het gebruik van enkele ingebouwde datum- en tijdfuncties om andere opslagklassen te gebruiken, zoals TEXT
, REAL
, of INTEGER
voor het opslaan van de datum- en tijdwaarden.
De TEXT
gebruiken opslagklasse voor het opslaan van SQLite-datum en tijd
Als u de TEXT
. gebruikt opslagklasse om de datum- en tijdwaarde op te slaan, moet u het ISO8601-tekenreeksformaat als volgt gebruiken:
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
Bijvoorbeeld 2016-01-01 10:20:05.123
Maak eerst een nieuwe tabel met de naam datetime_text
voor demonstratie.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
Probeer het
De tabel bevat twee kolommen d1
en d2
met TEXT
gegevenstype.
Datum- en tijdwaarden invoegen in de datetime_text
tabel, gebruik je de DATETIME
functie.
Om bijvoorbeeld de huidige UTC-datum en tijdwaarde te krijgen, geeft u de nu letterlijke tekenreeks als volgt door aan de functie:
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
Probeer het
Om de lokale tijd te krijgen, geef je een extra argument door localtime
.
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten tweede, voeg de datum- en tijdwaarden in de datetime_text
tabel als volgt:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten derde, vraag de gegevens op uit de datetime_text
tafel.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
Probeer het
REAL
gebruiken opslagklasse om SQLite-datum- en tijdwaarden op te slaan
U kunt de REAL
. gebruiken opslagklasse om de datum- en/of tijdwaarden op te slaan als Juliaanse dagnummers, wat het aantal dagen is sinds de middag in Greenwich op 24 november 4714 v. Chr. gebaseerd op de proleptische Gregoriaanse kalender.
Laten we eens kijken naar een voorbeeld van het gebruik van de REAL-opslagklasse om datum- en tijdwaarden op te slaan.
Maak eerst een nieuwe tabel met de naam datetime_real
.
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten tweede, voeg de "huidige" datum- en tijdwaarde in de datetime_real
tafel.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
Probeer het
We gebruikten de julianday()
functie om de huidige datum en tijd om te zetten in de Juliaanse dag.
Ten derde, vraag gegevens op uit de datetime_real
tafel.
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
Probeer het
De uitvoer is niet leesbaar voor mensen.
Gelukkig kun je de ingebouwde date()
. gebruiken en time()
functies om een datum- en tijdwaarde als volgt op te maken:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
Probeer het
INTEGER
gebruiken om SQLite-datum- en tijdwaarden op te slaan
Naast TEXT
en REAL
opslagklassen, kunt u de INTEGER
opslagklasse om datum- en tijdwaarden op te slaan.
We gebruiken meestal de INTEGER
om UNIX-tijd op te slaan, wat het aantal seconden is sinds 1970-01-01 00:00:00 UTC
. Zie het volgende voorbeeld:
Maak eerst een tabel met één kolom waarvan het gegevenstype INTEGER
is om de datum- en tijdwaarden op te slaan.
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten tweede, voeg de huidige datum- en tijdwaarde in de datetime_int
tafel.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
Probeer het
Ten derde, vraag gegevens op van de datetime_int
tafel.
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Probeer het
Het is een geheel getal.
Om het resultaat op te maken, kunt u de ingebouwde datetime()
. gebruiken functioneren als volgt:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Probeer het
Met SQLite kunt u vrijelijk alle gegevenstypen kiezen om datum- en tijdwaarden op te slaan en de ingebouwde datum- en tijdfunctie gebruiken om tussen indelingen te converteren.
Voor gedetailleerde informatie over SQLite-functies voor datums en tijden, bekijk de ingebouwde functies voor datums en tijden.
In deze zelfstudie hebt u geleerd hoe u de TEXT
. gebruikt , REAL
, en INTEGER
opslagklassen om datum- en tijdwaarden op te slaan. Bovendien hebt u geleerd hoe u de ingebouwde datum- en tijdfuncties kunt gebruiken om de opgeslagen datum- en tijdwaarden om te zetten in leesbare formaten.