Проблем:
Бихте искали да получите разликата в дни между две дати в база данни на MySQL.
Пример:
Нашата база данни има таблица с име food с данни в колоните id , name , purchase_date и expiration_date .
| id | име | дата_на_покупка | срок на годност |
|---|---|---|---|
| 1 | хляб | 20.07.2019 | 22.08.2019 |
| 2 | масло | 30.07.2018 | 10.08.2019 |
| 3 | мляко | 12.01.2019 | 13.01.2019 |
| 4 | кисело мляко | 25.02.2019 | 24.02.2019 |
За всеки хранителен продукт нека получим името на продукта и броя на дните между изтичането му и датата на покупка.
Решение:
Ще използваме DATEDIFF() функция. Ето заявката, която бихте написали:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Ето резултата от заявката:
| name | дни |
|---|---|
| хляб | 33 |
| масло | 376 |
| мляко | 1 |
| кисело мляко | -1 |
Дискусия:
Използвайте DATEDIFF() функция за извличане на броя дни между две дати в база данни на MySQL. Тази функция приема два аргумента:
- Крайна дата. (В нашия пример това е
expiration_dateколона.) - Начална дата. (В нашия пример това е
purchase_dateколона.)
Тези аргументи могат да бъдат стойности за дата/дата и час, изрази, които връщат стойности за дата/дата и час, или колони от типа дата и час или дата.
Тази функция изважда началната дата от крайната и връща броя на дните като цяло число. В нашия пример масло е закупен на „2018-07-30“, но срокът му на валидност е „2019-08-10“; след закупуване може да се яде в продължение на 376 дни. Обърнете внимание, че киселото мляко е закупено като остарял продукт:разликата в дните е -1 и датата на покупката му е по-късна от срока на годност.