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.