Как получить количество дней между двумя датами на MySQL?



Мне нужно получить количество дней, содержащихся в течение нескольких дат на mysql.



например: дата заезда 12-04-2010 дата выезда 15-04-2010 и разница в день будет 3

731   6  

6 ответов:

а как же DATEDIFF

обратите внимание, если вы хотите считать полный 24h дней между 2 датами, datediff может возвращать неправильные значения для вас.

как говорится в документации:

в расчете используются только части дат значений.

что приводит к

select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')

возвращает 1 вместо 0.

решение использует select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); (обратите внимание на противоположный порядок аргументов по сравнению с функция DateDiff.)

примеры:

  • select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); возвращает 0
  • select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00'); возвращает 1
  • select timestampdiff(DAY, '2016-04-13 11:00:00', now());возвращает сколько полных 24h дней прошло с 2016-04-13 11: 00: 00 до сих пор.

надеюсь, что это поможет кому-то, потому что сначала не так очевидно, почему datediff возвращает значения, которые кажутся неожиданными или неправильными.

использовать DATEDIFF()

предпочитаю TIMESTAMPDIFF потому что вы можете легко изменить единицы измерения, если это необходимо.

получить дней между текущей датой до даты назначения

 SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;

выход

дней

 335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM  membership_dates md

выход::

id  entity_id    start_date            end_date             days

1   1236      2018-01-16 00:00:00     2018-08-31 00:00:00    227
2   2876      2015-06-26 00:00:00     2019-06-30 00:00:00   1465
3   3880      1990-06-05 00:00:00     2018-07-04 00:00:00   10256
4   3882      1993-07-05 00:00:00     2018-07-04 00:00:00   9130

надеюсь, что это поможет кому-то в будущем

Comments

    Ничего не найдено.