sql >> Databasteknik >  >> RDS >> Mysql

Hur man beräknar skillnaden mellan två datum i MySQL

Problem:

Du har två kolumner av datumtypen och du vill beräkna skillnaden mellan dem.

Exempel:

I travel tabell, det finns tre kolumner:id , departure och arrival . Du vill beräkna skillnaden mellan arrival och departure , eller antalet dagar från arrival till avgång inklusive.

travel tabellen ser ut så här:

id avgång ankomst
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

Lösning:

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

Resultatet är:

id avgång ankomst date_difference days_inclusive
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

Diskussion:

För att räkna skillnaden mellan datum i MySQL, använd DATEDIFF(enddate, startdate) fungera. Skillnaden mellan startdate och enddate uttrycks i dagar. I det här fallet, enddate är arrival och startdate är departure .

I de flesta fall är det du verkligen vill ha antalet dagar från det första datumet till det andra datumet inklusive . Du måste lägga till 1 dag till skillnaden:DATEDIFF(arrival, departure) + 1 .


  1. Hur man tar bort ledande blanksteg i MySQL

  2. Android Room Database, hämta det specifika värdet för den senaste posten

  3. Hur man hittar EBS R12 komponenter Version

  4. Vad är skillnaderna mellan INSERT och UPDATE i MySQL?