sql >> Databasteknik >  >> RDS >> Mysql

Hur man hittar antalet dagar mellan två datum i MySQL

Problem:

Du vill se skillnaden, i dagar, mellan två datum i en MySQL-databas.

Exempel:

Vår databas har en tabell som heter food med data i kolumnerna id , name , purchase_date och expiration_date .

id namn köpdatum expiration_date
1 bröd 2019-07-20 2019-08-22
2 smör 2018-07-30 2019-08-10
3 mjölk 2019-01-12 2019-01-13
4 yoghurt 2019-02-25 2019-02-24

För varje livsmedelsprodukt, låt oss få namnet på produkten och antalet dagar mellan dess utgångsdatum och inköpsdatum.

Lösning:

Vi använder DATEDIFF() fungera. Här är frågan du skulle skriva:

SELECT
  name,
  DATEDIFF(expiration_date, purchase_date) AS days
FROM food;

Här är resultatet av frågan:

namn dagar
bröd 33
smör 376
mjölk 1
yoghurt -1

Diskussion:

Använd DATEDIFF() funktion för att hämta antalet dagar mellan två datum i en MySQL-databas. Denna funktion tar två argument:

  1. Slutdatum. (I vårt exempel är det expiration_date kolumn.)
  2. Startdatumet. (I vårt exempel är det purchase_date kolumn.)

Dessa argument kan vara datum/datumtid-värden, uttryck som returnerar datum/datumtid-värden eller kolumner av datatypen datetime eller datum.

Denna funktion subtraherar startdatumet från slutdatumet och returnerar antalet dagar som ett heltal. I vårt exempel, smör köptes "2018-07-30", men dess utgångsdatum var "2019-08-10"; efter köp kunde den ätas under 376 dagar. Observera att yoghurt köptes som en föråldrad produkt:skillnaden i dagar är -1 och dess inköpsdatum är senare än utgångsdatumet.


  1. MariaDB sammansatta datum- och tidsenheter förklaras

  2. Hur kan jag dela upp en lång, enkel SQLiteOpenHelper i flera klasser, en för varje tabell

  3. Varför kan jag inte använda bindningsvariabler i DDL/SCL-satser i dynamisk SQL?

  4. @BatchSize en smart eller dum användning?