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

Come calcolare la differenza tra due date in SQLite

Problema:

Hai due colonne del tipo data e vuoi calcolare la differenza tra loro.

Esempio:

Nel travel tabella, ci sono tre colonne:id , departure e arrival . Vorresti calcolare la differenza tra arrival e departure e il numero di giorni dall'arrivo alla partenza compreso .

Il travel la tabella si presenta così:

id partenza arrivo
1 25-03-2018 05-04-2018
2 12-09-2019 23-09-2019
3 14-07-2018 14-07-2018
4 05-01-2018 08-01-2018

Soluzione:

SELECT
  id,
  departure,
  arrival,
  JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference,
  JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive
FROM travel;

Il risultato è:

id partenza arrivo date_difference giorni
1 25-03-2018 05-04-2018 11 12
2 12-09-2019 23-09-2019 11 12
3 14-07-2018 14-07-2018 0 1
4 05-01-2018 08-01-2018 3 4

Discussione:

Per contare la differenza tra le date, usa JULIANDAY() funzione, che conta il numero di giorni trascorsi da mezzogiorno a Greenwich il 24 novembre 4714 a.C. Usi il JULIANDAY(date) per ciascuna delle due date; semplicemente sottraili usando un segno meno (-):

JULIANDAY(arrival) - JULIANDAY(departure)

Nella maggior parte dei casi, quello che vuoi veramente è il numero di giorni dalla prima data alla seconda data inclusivamente . Quindi devi aggiungere 1 giorno alla differenza in giorni:

JULIANDAY(arrival) - JULIANDAY(departure) + 1.