SQLite strftime()
La funzione consente di restituire un valore di data e ora in un formato specificato.
Il valore di data/ora effettivo restituito si basa su una stringa temporale fornita come argomento quando si chiama la funzione, nonché su eventuali modificatori inclusi (come argomenti facoltativi). Un modificatore ti consente di modificare la data, ad esempio aggiungere un numero di giorni, impostarlo sull'ora locale, ecc
Sintassi
La sintassi è questa:
strftime(format, timestring, modifier, modifier, ...)
Il format
argomento può essere qualsiasi combinazione di sostituzioni di stringhe di formato valide per strftime()
funzione.
Il timestring
l'argomento deve essere una stringa di tempo valida.
Il modifier
gli argomenti sono facoltativi. Puoi fornire uno o più modificatori. Se fornisci un modificatore, deve essere un modificatore valido.
Esempio
Ecco un esempio da dimostrare.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Risultato:
2020-04-29 01:29:54
Il now
la stringa dell'ora viene convertita nella data e nell'ora correnti, in base alla stringa di formato fornita.
In questo caso, la mia stringa di formato restituisce esattamente lo stesso risultato di datetime('now')
sarebbe tornato.
Aggiungi un modificatore
Possiamo modificare il risultato precedente usando un modificatore. Ecco un esempio.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Risultato:
2020-04-29 03:31:50
In questo caso ho aggiunto due ore al tempo.
Modificatori multipli
Puoi aggiungere più modificatori. Ecco un esempio di aggiunta di un altro modificatore all'esempio precedente.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Risultato:
2020-04-29 13:33:22
Nel mio caso, il localtime
modificatore ha comportato lo spostamento dell'ora in avanti.
Ciò è dovuto al localtime
modificatore presuppone che la stringa di tempo fornita sia in UTC (Universal Coordinated Time). Quindi regola la stringa dell'ora in modo da visualizzare l'ora locale.
Potresti ottenere un risultato diverso, a seconda della tua ora locale.
Eccolo di nuovo confrontando l'ora locale originale con il risultato modificato:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Risultato:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Tempo Unix/Epoca
Puoi usare il %s
format string (minuscolo) per calcolare l'epoca.
SELECT strftime('%s', 'now');
Risultato:
1588124826
Epoch time (noto anche come Epoch time, POSIX time, secondi dall'Epoch o UNIX Epoch time) è il numero di secondi dal 1970-01-01.
L'ora Unix è ampiamente utilizzata nei sistemi operativi e nei formati di file.
Giorno di Giuliano
Puoi usare %J
per restituire il giorno giuliano.
Julian Day è il numero di giorni trascorsi da mezzogiorno a Greenwich il 24 novembre 4714 a.C. (usando il calendario gregoriano prolettico).
Se si utilizza il prolettico calendario giuliano, questo è lunedì 1 gennaio 4713 aC.
Il giorno giuliano viene in genere utilizzato da astronomi, software e così via per calcolare i giorni trascorsi tra due eventi.
Ecco come restituire il giorno giuliano con strftime()
funzione.
SELECT strftime('%J', 'now');
Risultato:
2458968.575441667
Un altro modo per farlo in SQLite è usare julianday()
funzione.
Intervallo di date
Come per tutte le funzioni di data e ora di SQLite, strftime()
funziona solo per le date comprese tra 0000-01-01 00:00:00 e 9999-12-31 23:59:59 (giuliano numeri da 1721059.5 a 5373484.5).
Per le date al di fuori di tale intervallo, i risultati non sono definiti.