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:
- Slutdatum. (I vårt exempel är det
expiration_date
kolumn.) - 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.