Problema:
Você tem duas colunas do tipo data e deseja calcular a diferença entre elas.
Exemplo:
Na
travel
tabela, há três colunas:id
, departure
, e arrival
. Você gostaria de calcular a diferença entre arrival
e departure
, ou o número de dias de arrival
à partida inclusive. A
travel
tabela fica assim:id | partida | chegada |
---|---|---|
1 | 25-03-2018 | 2018-04-05 |
2 | 2019-09-12 | 23-09-2019 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
Solução:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
O resultado é:
id | partida | chegada | date_difference | dias_inclusive |
---|---|---|---|---|
1 | 25-03-2018 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 23-09-2019 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
Discussão:
Para contar a diferença entre datas no MySQL, use o
DATEDIFF(enddate, startdate)
função. A diferença entre startdate
e enddate
é expresso em dias. Nesse caso, o enddate
é arrival
e a startdate
é departure
. Na maioria dos casos, porém, o que você realmente quer é o número de dias entre a primeira e a segunda data inclusive . Você precisa adicionar 1 dia à diferença:
DATEDIFF(arrival, departure) + 1
.