Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намерите броя на дните между две дати в MySQL

Проблем:

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

  1. Крайна дата. (В нашия пример това е expiration_date колона.)
  2. Начална дата. (В нашия пример това е purchase_date колона.)

Тези аргументи могат да бъдат стойности за дата/дата и час, изрази, които връщат стойности за дата/дата и час, или колони от типа дата и час или дата.

Тази функция изважда началната дата от крайната и връща броя на дните като цяло число. В нашия пример масло е закупен на „2018-07-30“, но срокът му на валидност е „2019-08-10“; след закупуване може да се яде в продължение на 376 дни. Обърнете внимание, че киселото мляко е закупено като остарял продукт:разликата в дните е -1 и датата на покупката му е по-късна от срока на годност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. автоматично увеличение на първичното оставяне на пропуски в броенето

  2. Ръководство за проектиране на база данни за RBAC в MySQL

  3. Как да получите общия брой потребители на ден в MySQL

  4. MySQL срещу MariaDB

  5. mysql изберете от n последни реда