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
, o el número de días desde la arrival
a 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, DATEDIFF(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 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 encontrar la diferencia entre fechas, use DATEDIFF(datepart, startdate, enddate)
función. El datepart
argumento define la parte de la fecha/fechahora en la que le gustaría expresar la diferencia. Su valor puede ser year
, quarter
, month
, day
, minute
, etc. En este ejemplo, desea expresar la diferencia en días, por lo que el primer argumento es el día. Los otros dos argumentos son la fecha desde la que comienza a contar y la fecha en la que deja de contar; en este caso, departure
y arrival
, respectivamente.
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:DATEDIFF(day, departure, arrival) + 1
.