SQL >> Base de Datos >  >> RDS >> SQLite

Cómo calcular la diferencia entre dos fechas en SQLite

Problema:

Tiene dos columnas del tipo fecha y desea calcular la diferencia entre ellas.

Ejemplo:

En el travel tabla, hay tres columnas:id , departure y arrival . Le gustaría calcular la diferencia entre arrival y departure y el número de días desde la llegada hasta la salida inclusive .

El travel la tabla se ve así:

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

Solución:

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

El resultado es:

id salida llegada diferencia_fecha días
1 2018-03-25 2018-04-05 11 12
2 2019-09-12 2019-09-23 11 12
3 2018-07-14 2018-07-14 0 1
4 2018-01-05 2018-01-08 3 4

Discusión:

Para contar la diferencia entre fechas, use JULIANDAY() función, que cuenta el número de días desde el mediodía en Greenwich el 24 de noviembre de 4714 a.C. Usas el JULIANDAY(date) para cada una de las dos fechas; simplemente restarlos usando un signo menos (-):

JULIANDAY(arrival) - JULIANDAY(departure)

En la mayoría de los casos, lo que realmente desea es la cantidad de días desde la primera fecha hasta la segunda fecha inclusive . Luego, debe agregar 1 día a la diferencia en días:

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