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_date
sloupec.) - Datum zahájení. (V našem příkladu je to
purchase_date
sloupec.)
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.