Oversigt :i denne øvelse viser vi dig, hvordan du arbejder med SQLite-dato- og tidsværdierne og bruger de indbyggede datoer og klokkeslætsfunktioner til at håndtere dato- og tidsværdier.
SQLite understøtter ikke indbygget dato- og/eller tidslagringsklasse. I stedet udnytter den nogle indbyggede dato- og tidsfunktioner til at bruge andre lagerklasser såsom TEXT , REAL eller INTEGER til lagring af dato- og tidsværdier.
Brug af TEXT lagerklasse til lagring af SQLite dato og klokkeslæt
Hvis du bruger TEXT lagerklasse for at gemme dato- og tidsværdi, skal du bruge ISO8601-strengformatet som følger:
YYYY-MM-DD HH:MM:SS.SSSCode language: SQL (Structured Query Language) (sql)
For eksempel 2016-01-01 10:20:05.123
Først skal du oprette en ny tabel med navnet datetime_text til demonstration.
CREATE TABLE datetime_text(
d1 text,
d2 text
);Code language: SQL (Structured Query Language) (sql) Prøv det
Tabellen indeholder to kolonner d1 og d2 med TEXT datatype.
For at indsætte dato- og tidsværdier i datetime_text tabellen, bruger du DATETIME funktion.
For at få den aktuelle UTC-dato og -tidsværdi, sender du den nu bogstavelige streng til funktionen som følger:
SELECT datetime('now');Code language: SQL (Structured Query Language) (sql) Prøv det
For at få den lokale tid sender du et ekstra argument localtime .
SELECT datetime('now','localtime');Code language: SQL (Structured Query Language) (sql) Prøv det
For det andet skal du indsætte dato- og tidsværdierne i datetime_text tabel som følger:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));Code language: SQL (Structured Query Language) (sql) Prøv det
For det tredje skal du forespørge dataene fra datetime_text tabel.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;Code language: SQL (Structured Query Language) (sql) Prøv det
Brug af REAL lagerklasse til at gemme SQLite-dato- og tidsværdier
Du kan bruge REAL opbevaringsklasse for at gemme dato- og/eller tidsværdierne som julianske dagtal, hvilket er antallet af dage siden middagstid i Greenwich den 24. november 4714 f.Kr. baseret på den proleptiske gregorianske kalender.
Lad os se på et eksempel på brug af REAL storage-klassen til at gemme dato- og tidsværdier.
Først skal du oprette en ny tabel med navnet datetime_real .
CREATE TABLE datetime_real(
d1 real
);Code language: SQL (Structured Query Language) (sql) Prøv det
For det andet skal du indsætte den "aktuelle" dato- og tidsværdi i datetime_real tabel.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));Code language: SQL (Structured Query Language) (sql) Prøv det
Vi brugte julianday() funktion til at konvertere den aktuelle dato og tid til den julianske dag.
For det tredje, forespørg data fra datetime_real tabel.
SELECT d1 FROM datetime_real;Code language: SQL (Structured Query Language) (sql) Prøv det
Outputtet kan ikke læses af mennesker.
Heldigvis kan du bruge den indbyggede date() og time() funktioner til at formatere en dato- og tidsværdi som følger:
SELECT
date(d1),
time(d1)
FROM
datetime_real;Code language: SQL (Structured Query Language) (sql) Prøv det
Ved brug af INTEGER for at gemme SQLite-dato- og tidsværdier
Udover TEXT og REAL lagerklasser, kan du bruge INTEGER lagerklasse til at gemme dato- og tidsværdier.
Vi bruger typisk INTEGER for at gemme UNIX-tid, som er antallet af sekunder siden 1970-01-01 00:00:00 UTC . Se følgende eksempel:
Først skal du oprette en tabel, der har én kolonne, hvis datatype er INTEGER for at gemme dato- og tidsværdierne.
CREATE TABLE datetime_int (d1 int);Code language: SQL (Structured Query Language) (sql) Prøv det
For det andet skal du indsætte den aktuelle dato- og tidsværdi i datetime_int tabel.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));Code language: SQL (Structured Query Language) (sql) Prøv det
For det tredje, forespørg data fra datetime_int tabel.
SELECT d1 FROM datetime_int;Code language: SQL (Structured Query Language) (sql) Prøv det
Det er et heltal.
For at formatere resultatet kan du bruge den indbyggede datetime() fungerer som følger:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;Code language: SQL (Structured Query Language) (sql) Prøv det
Ved hjælp af SQLite kan du frit vælge alle datatyper til at gemme dato- og tidsværdier og bruge den indbyggede dato- og klokkeslætfunktion til at konvertere mellem formater.
For detaljerede oplysninger om SQLites datoer og klokkeslætsfunktioner, se de indbyggede datoer og klokkeslætsfunktioner.
I denne øvelse har du lært, hvordan du bruger TEXT , REAL , og INTEGER lagerklasser til at gemme dato- og tidsværdier. Derudover lærte du, hvordan du bruger de indbyggede datoer og klokkeslætsfunktioner til at konvertere de gemte dato- og klokkeslætsværdier til læsbare formater.