Problém:
Rádi byste získali rozdíl ve dnech mezi dvěma daty v databázi MySQL.
Příklad:
Naše databáze obsahuje tabulku s názvem food s údaji ve sloupcích id , name , purchase_date a expiration_date .
| id | jméno | purchase_date | expiration_date |
|---|---|---|---|
| 1 | chléb | 20. 7. 2019 | 22. 8. 2019 |
| 2 | máslo | 2018-07-30 | 2019-08-10 |
| 3 | mléko | 2019-01-12 | 2019-01-13 |
| 4 | jogurt | 25. 2. 2019 | 24. 2. 2019 |
U každého potravinářského produktu si uveďme název produktu a počet dní mezi jeho expirací a datem nákupu.
Řešení:
Použijeme DATEDIFF() funkce. Zde je dotaz, který byste napsali:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Zde je výsledek dotazu:
| jméno | dnů |
|---|---|
| chléb | 33 |
| máslo | 376 |
| mléko | 1 |
| jogurt | -1 |
Diskuse:
Použijte DATEDIFF() funkce pro načtení počtu dní mezi dvěma daty v databázi MySQL. Tato funkce má dva argumenty:
- Datum ukončení. (V našem příkladu je to
expiration_datesloupec.) - Datum zahájení. (V našem příkladu je to
purchase_datesloupec.)
Těmito argumenty mohou být hodnoty date/datetime, výrazy vracející hodnoty date/datetime nebo sloupce datového typu datetime nebo date.
Tato funkce odečte počáteční datum od koncového data a vrátí počet dní jako celé číslo. V našem příkladu máslo byl zakoupen dne „2018-07-30“, ale jeho datum expirace bylo „2019-08-10“; po zakoupení se dal jíst 376 dní. Všimněte si, že jogurt byl zakoupen jako zastaralý produkt:rozdíl ve dnech je -1 a datum nákupu je pozdější než datum expirace.