Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como calcular a diferença entre duas datas no MySQL

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 .