sql >> Database teknologi >  >> RDS >> SQLite

SQLite dato og tid

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.


  1. Admin-scripts i R12.2 Ebuisness Suite

  2. Sådan får du SQL Server-statistikoplysninger ved hjælp af systemstatistiske funktioner

  3. 1064 fejl i CREATE TABLE ... TYPE=MYISAM

  4. Udfør produktanalyse ved hjælp af SQL Server Full-Text Search. Del 1