sql >> Database >  >> RDS >> Mysql

Hoe het verschil tussen twee datums in MySQL te berekenen?

Probleem:

U heeft twee kolommen van het datumtype en u wilt het verschil daartussen berekenen.

Voorbeeld:

In de travel tabel, zijn er drie kolommen:id , departure , en arrival . U wilt het verschil berekenen tussen arrival en departure , of het aantal dagen vanaf arrival inclusief vertrek.

De travel tabel ziet er als volgt uit:

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

Oplossing:

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

Het resultaat is:

id vertrek aankomst date_difference days_inclusive
1 25-03-2018 05-04-2018 11 12
2 2019-09-12 23-09-2019 11 12
3 2018-07-14 2018-07-14 0 1
4 05-01-2018 2018-01-08 3 4

Discussie:

Gebruik de DATEDIFF(enddate, startdate) om het verschil tussen datums in MySQL te tellen. functie. Het verschil tussen startdate en enddate wordt uitgedrukt in dagen. In dit geval is de enddate is arrival en de startdate is departure .

In de meeste gevallen wilt u echter het aantal dagen vanaf de eerste date tot de tweede date inclusief . U moet 1 dag bij het verschil optellen:DATEDIFF(arrival, departure) + 1 .


  1. Kolominformatie retourneren voor een opgeslagen procedure in SQL Server:sp_sproc_columns

  2. Hoe de sortering in MySQL te vinden

  3. Waarom is het resultaat van de rijen met explain niet gelijk aan count()?

  4. gebruik de opdracht database_name in PostgreSQL