sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat rozdíl mezi dvěma daty v MySQL

Problém:

Máte dva sloupce typu datum a chcete vypočítat rozdíl mezi nimi.

Příklad:

V travel tabulka má tři sloupce:id , departure a arrival . Chcete vypočítat rozdíl mezi arrival a departure nebo počet dní od arrival včetně odjezdu.

travel tabulka vypadá takto:

id odjezd příjezd
1 25. 3. 2018 2018-04-05
2 2019-09-12 23. 9. 2019
3 2018-07-14 2018-07-14
4 2018-01-05 2018-01-08

Řešení:

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

Výsledek je:

id odjezd příjezd rozdíl data včetně_dnů
1 25. 3. 2018 2018-04-05 11 12
2 2019-09-12 23. 9. 2019 11 12
3 2018-07-14 2018-07-14 0 1
4 2018-01-05 2018-01-08 3 4

Diskuse:

Chcete-li spočítat rozdíl mezi daty v MySQL, použijte DATEDIFF(enddate, startdate) funkce. Rozdíl mezi startdate a enddate se vyjadřuje ve dnech. V tomto případě enddate je arrival a startdate je departure .

Ve většině případů však skutečně chcete počet dní od prvního rande do druhého rande včetně . K rozdílu musíte přidat 1 den:DATEDIFF(arrival, departure) + 1 .


  1. Nelze nainstalovat pg gem na Windows

  2. 3 způsoby, jak převést HEX na INT v SQL Server (T-SQL)

  3. Používání tabulek JavaFX k organizaci dat

  4. RowGen v3 automatizuje generování testovacích dat databáze