Riepilogo :in questo tutorial, ti mostreremo come lavorare con i valori di data e ora di SQLite e utilizzare le funzioni di data e ora integrate per gestire i valori di data e ora.
SQLite non supporta la classe di archiviazione di data e/o ora incorporata. Al contrario, sfrutta alcune funzioni di data e ora integrate per utilizzare altre classi di archiviazione come TEXT
, REAL
o INTEGER
per memorizzare i valori di data e ora.
Utilizzo del TEXT
classe di archiviazione per la memorizzazione di data e ora SQLite
Se usi il TEXT
classe di archiviazione per memorizzare il valore di data e ora, è necessario utilizzare il formato stringa ISO8601 come segue:
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
Ad esempio, 2016-01-01 10:20:05.123
Innanzitutto, crea una nuova tabella denominata datetime_text
per la dimostrazione.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
Provalo
La tabella contiene due colonne d1
e d2
con TEXT
tipo di dati.
Per inserire i valori di data e ora nel datetime_text
tabella, usi il DATETIME
funzione.
Ad esempio, per ottenere il valore della data e dell'ora UTC corrente, si passa la stringa ora letterale alla funzione come segue:
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
Provalo
Per ottenere l'ora locale, si passa un argomento aggiuntivo localtime
.
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
Provalo
In secondo luogo, inserisci i valori di data e ora in datetime_text
tabella come segue:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
Provalo
Terzo, interroga i dati da datetime_text
tabella.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
Provalo
Utilizzo di REAL
classe storage per memorizzare i valori di data e ora di SQLite
Puoi usare il REAL
classe di archiviazione per memorizzare i valori di data e/o ora come numeri del giorno giuliano, che è il numero di giorni trascorsi da mezzogiorno a Greenwich il 24 novembre 4714 a.C. basato sul prolettico calendario gregoriano.
Diamo un'occhiata a un esempio di utilizzo della classe di archiviazione REAL per memorizzare i valori di data e ora.
Innanzitutto, crea una nuova tabella denominata datetime_real
.
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
Provalo
In secondo luogo, inserisci il valore di data e ora "corrente" in datetime_real
tabella.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
Provalo
Abbiamo usato julianday()
funzione per convertire la data e l'ora correnti nel giorno giuliano.
Terzo, interroga i dati da datetime_real
tabella.
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
Provalo
L'output non è leggibile dall'uomo.
Fortunatamente, puoi usare il built-in date()
e time()
funzioni per formattare un valore di data e ora come segue:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
Provalo
Utilizzo di INTEGER
per memorizzare i valori di data e ora di SQLite
Oltre a TEXT
e REAL
classi di archiviazione, puoi utilizzare INTEGER
classe di archiviazione per memorizzare i valori di data e ora.
In genere utilizziamo INTEGER
per memorizzare l'ora UNIX che è il numero di secondi trascorsi da 1970-01-01 00:00:00 UTC
. Vedi il seguente esempio:
Innanzitutto, crea una tabella con una colonna il cui tipo di dati è INTEGER
per memorizzare i valori di data e ora.
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
Provalo
In secondo luogo, inserisci il valore di data e ora corrente in datetime_int
tabella.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
Provalo
Terzo, interroga i dati da datetime_int
tabella.
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Provalo
È un numero intero.
Per formattare il risultato, puoi utilizzare il built-in datetime()
funzionano come segue:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Provalo
Utilizzando SQLite, puoi scegliere liberamente qualsiasi tipo di dati per memorizzare i valori di data e ora e utilizzare la funzione di data e ora incorporata per convertire tra formati.
Per informazioni dettagliate sulle funzioni di date e orari di SQLite, controlla le funzioni di date e orari integrate.
In questo tutorial, hai imparato a usare il TEXT
, REAL
e INTEGER
classi di archiviazione per memorizzare i valori di data e ora. Inoltre, hai imparato come utilizzare le funzioni di data e ora integrate per convertire i valori di data e ora memorizzati in formati leggibili.