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_datekolumn.) - Startdatumet. (I vårt exempel är det
purchase_datekolumn.)
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.