Проблем:
Бихте искали да получите разликата в дни между две дати в база данни на 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 и датата на покупката му е по-късна от срока на годност.