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

Come funziona la funzione STRFtime() in SQLite

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.