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');возвращает 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');возвращает 1select 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