SQLite supporta cinque funzioni per lavorare con date e orari. Questi sono:
date()
time()
datetime()
julianday()
strftime()
Tutte queste funzioni accettano una stringa temporale come argomento. Accettano anche altri argomenti per modificare/formattare l'output.
Il strftime()
la funzione è la funzione più versatile delle cinque. In effetti, questa funzione può fare tutto ciò che le altre quattro possono fare.
In altre parole, potresti usare strftime()
per tutte le tue esigenze di formattazione di data e ora. Le altre quattro funzioni sono disponibili esclusivamente per comodità.
Sintassi
La sintassi di ciascuna funzione è la seguente:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
Nelle prime quattro funzioni, il primo argomento è una stringa temporale e tutti gli argomenti successivi sono modificatori.
Nel strftime()
funzione il primo argomento è la stringa di formato, seguita dalla stringa dell'ora e da eventuali modificatori.
Tutte le stringhe temporali e i modificatori validi sono elencati nella parte inferiore di questo articolo.
Ma prima, esaminiamo alcuni rapidi esempi di ciascuna di queste funzioni.
La funzione date()
Puoi usare date()
funzione con un argomento o con più argomenti.
Ecco un esempio con un solo argomento:
SELECT date('now');
Risultato:
2020-04-23
Ecco un esempio che utilizza un modificatore:
SELECT date('now', 'localtime');
Risultato:
2020-04-24
In questo caso ho usato localtime
modificatore. Questo modificatore presuppone che la stringa dell'ora sia in UTC (Universal Coordinated Time) e regola la stringa dell'ora in modo che visualizzi l'ora locale.
La funzione time()
Il time()
la funzione è simile a date()
funzione, tranne per il fatto che restituisce l'ora anziché la data.
Ecco un esempio:
SELECT time('now');
Risultato:
00:02:05
Ed eccolo qui con localtime
modificatore:
SELECT time('now', 'localtime');
Risultato:
10:02:09
La funzione datetime()
SQLite datetime()
function combina le due funzioni precedenti, nel senso che emette sia la data che l'ora.
Ecco un esempio:
SELECT datetime('now');
Risultato:
"2020-04-24 00:04:13"
Ed eccolo qui con localtime
modificatore:
SELECT datetime('now', 'localtime');
Risultato:
"2020-04-24 10:04:46"
La funzione julianday()
Il julianday()
La funzione restituisce il conteggio continuo dei giorni dall'inizio del periodo giuliano, che è lunedì 1 gennaio 4713 a.C., calendario giuliano prolettico (24 novembre 4714 a.C., nel calendario gregoriano prolettico).
Ecco come appare usando now
come stringa temporale:
SELECT julianday('now');
Risultato:
2458963.50964815
E qui sta usando il localtime
modificatore:
SELECT julianday('now', 'localtime');
Risultato:
2458963.92637685
La funzione strftime()
Come accennato, il strftime()
La funzione può essere utilizzata per emettere valori di data e ora in qualsiasi formato disponibile nelle funzioni precedenti.
Questa funzione ti consente di essere molto specifico su come sono formattati i valori di data/ora. Ti consente di fornire il formato preciso in cui desideri che venga presentato.
La sintassi di questa funzione è la seguente:
strftime(format, timestring, modifier, modifier, ...)
Nota che il primo argomento è format
. Qui è dove fornisci il formato in cui desideri che venga emessa la stringa dell'ora.
La stringa di formato per strftime()
può consistere in una delle seguenti sostituzioni:
%d | Giorno del mese:00 |
%f | Secondi frazionari:SS.SSS |
%H | Ora:00-24 |
%j | Giorno dell'anno:001-366 |
%J | Numero del giorno di Giuliano |
%m | Mese:01-12 |
%M | Minuto:00-59 |
%s | Secondi dal 01-01-1970 |
%S | Secondi:00-59 |
%w | Giorno della settimana 0-6 con domenica==0 |
%W | Settimana dell'anno:00-53 |
%Y | Anno:0000-9999 |
%% | % |
Ecco un esempio:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Risultato:
"2020-04-24 00:43:51"
In questo caso otteniamo lo stesso risultato di quando si utilizza datetime()
funzione.
Eccolo con localtime
modificatore:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
Risultato:
"2020-04-24 10:45:27"
Di nuovo, stesso risultato di datetime()
. La differenza è strftime()
ci consente di specificare in modo esplicito il formato dell'output.
Ad esempio:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime');
Risultato:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
Formati di stringhe temporali validi
L'argomento della stringa dell'ora in tutte le funzioni di data/ora può essere fornito in uno dei seguenti formati:
- AAAA-MM-GG
- AAAA-MM-GG HH:MM
- AAAA-MM-GG HH:MM:SS
- AAAA-MM-GG HH:MM:SS.SSS
- AAAA-MM-GGTHH:MM
- AAAA-MM-GGTHH:MM:SS
- AAAA-MM-GGTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- ora
- DDDDDDDDDD
Modificatori validi
Puoi utilizzare uno qualsiasi dei seguenti modificatori con le funzioni di data/ora:
- NNN giorni
- NNN ore
- NNN minuti
- NNN.NNNN secondi
- NNN mesi
- NNN anni
- inizio mese
- inizio anno
- inizio giornata
- giorno della settimana N
- unixepoch
- ora locale
- ecc
Il N
si riferisce a un numero che viene aggiunto alla data, in base all'unità specificata.
Ad esempio:
SELECT
date('now'),
date('now', '3 days');
Risultato:
date('now') date('now', '3 days') ----------- --------------------- 2020-04-24 2020-04-27
Eccone uno che utilizza start of month
come modificatore:
SELECT
date('now'),
date('now', 'start of month');
Risultato:
date('now') date('now', 'start of month') ----------- ----------------------------- 2020-04-24 2020-04-01