SQLite ha un date()
funzione che consente di restituire un valore di data basato su una stringa di tempo e su eventuali modificatori.
Restituisce la data in questo formato:AAAA-MM-GG
Per utilizzare questa funzione, è necessario fornire una stringa di tempo, più eventuali modificatori (facoltativi). Un modificatore ti consente di modificare la data, ad esempio aggiungere un numero di giorni, impostarlo sull'ora locale, ecc
Sintassi
La sintassi di date()
la funzione va così:
date(timestring, modifier, modifier, ...)
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 per dimostrare il date()
funzione utilizzata con un argomento.
SELECT date('now');
Risultato:
2020-04-27
Il now
la stringa dell'ora viene convertita nella data e nell'ora correnti. Dato che sto usando date()
funzione, viene restituita solo la data.
Aggiungi un modificatore
Possiamo modificare il risultato precedente usando un modificatore. Ecco un esempio.
SELECT date('now', '+6 months');
Risultato:
2020-10-27
In questo caso ho aggiunto sei mesi alla data.
Modificatori multipli
Come accennato, puoi aggiungere uno o più modificatori. Ecco un esempio di aggiunta di un altro modificatore all'esempio precedente.
SELECT date('now', '+6 months', 'localtime');
Risultato:
2020-10-28
Nel mio caso, il localtime
modificatore ha comportato l'aggiunta di un giorno alla data.
Il motivo per cui lo fa è perché 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.
Pertanto, potresti ottenere un risultato diverso, a seconda della tua ora locale.
Stringa letterale come stringa temporale
Gli esempi precedenti usano now
come stringa dell'ora, ma puoi fornire qualsiasi stringa dell'ora valida.
Ecco alcuni altri esempi.
SELECT date('2020-04-27 23:58:57');
Risultato:
2020-04-27
In questo caso rimuove semplicemente la parte dell'ora dalla data.
Eccolo di nuovo, ma con alcuni modificatori.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
Risultato:
2020-07-01
In questo caso volevo ottenere la data che è di 6 mesi dall'inizio dell'anno della data fornita.
Ecco un esempio che utilizza il giorno giuliano come stringa temporale.
SELECT date('2458967.49737293');
Risultato:
2020-04-27
date() vs strftime()
Il date()
la funzione restituisce esattamente lo stesso risultato che strftime('%Y-%m-%d', ...)
ritorna. Il date()
funzione è solo un modo più conveniente per farlo.
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
Risultato:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
Intervallo di date
Come per tutte le funzioni di data e ora di SQLite, date()
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.