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

Come funziona la funzione DateTime() in SQLite

SQLite datetime() La funzione consente di restituire un valore di data e ora basato su una stringa di tempo e su eventuali modificatori.

Restituisce la data in questo formato:AAAA-MM-GG HH:MM:SS

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 è questa:

datetime(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 datetime() funzione utilizzata con un argomento.

SELECT datetime('now');

Risultato:

2020-04-28 23:56:06

Il now la stringa dell'ora viene convertita nella data e nell'ora correnti.

Aggiungi un modificatore

Possiamo modificare il risultato precedente usando un modificatore. Ecco un esempio.

SELECT datetime('now', '+3 hours');

Risultato:

2020-04-29 02:56:52

In questo caso, ho aggiunto tre ore al tempo. Data l'ora originale, ciò ha comportato anche lo spostamento della data in avanti al giorno successivo.

Modificatori multipli

Come accennato, puoi aggiungere uno o più modificatori. Ecco un esempio di aggiunta di un altro modificatore all'esempio precedente.

SELECT datetime('now', '+3 hours', 'localtime');

Risultato:

2020-04-29 12:58:13

Nel mio caso, il localtime modificatore ha comportato lo spostamento dell'ora in avanti.

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.

Eccolo di nuovo confrontando l'ora locale originale con il risultato modificato:

SELECT 
  datetime('now', 'localtime') AS "Local",
  datetime('now', '+3 hours', 'localtime') AS "Modified";

Risultato:

Local                Modified           
-------------------  -------------------
2020-04-29 10:02:09  2020-04-29 13:02:09

Data come stringa temporale

Gli esempi precedenti usano now come stringa dell'ora, ma puoi fornire qualsiasi stringa dell'ora valida.

Se fornisci solo la parte relativa alla data, la parte temporale verrà impostata su tutti zeri.

SELECT datetime('2010-08-15');

Risultato:

2010-08-15 00:00:00

Se viene fornita solo la parte dell'ora, la data viene impostata su 01-01-2000.

SELECT datetime('23:58:57');

Risultato:

2000-01-01 23:58:57

Ecco un esempio che utilizza il giorno giuliano come stringa temporale.

SELECT datetime('2451545.49927083');

Risultato:

2000-01-01 23:58:57

datetime() vs strftime()

Il datetime() la funzione restituisce esattamente lo stesso risultato che strftime('%Y-%m-%d %H:%M:%S', ...) ritorna. Il datetime() funzione è solo un modo più conveniente per farlo.

SELECT 
  datetime('now'),
  strftime('%Y-%m-%d %H:%M:%S', 'now');

Risultato:

datetime('now')      strftime('%Y-%m-%d %H:%M:%S', 'now')
-------------------  ------------------------------------
2020-04-29 00:16:12  2020-04-29 00:16:12                 

Intervallo di date

Come per tutte le funzioni di data e ora di SQLite, datetime() 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.