mysql & amp; Как рассчитать общий год опыта из нескольких диапазонов дат?

Я хочу рассчитать общий год опыта и месяц для каждого конкретного идентификатора пользователя. user_id может быть кратным в таблице, как показано ниже. Здесь для user_id 14 общий диапазон опыта будет с 2010-01-03 по 2013-11-30, и ожидаемый результат будет 3 года 11 месяцев. Как я могу сделать это в php или mysql?

введите описание изображения здесь

0

Решение

Комментарии актуальны, но неполны для вашего случая.

Если exp_to не обнуляется

select user_id, sum( datediff(exp_to, exp_from) +1 )
from experience
group by user_id;

Заметки:

  • не забывай +1 в сумме, потому что для пользователя 25 он будет возвращать 0, тогда как мы можем прилично считать, что пользователь работал 1 день
  • для пользователя 14, согласно вашему скриншоту, общее количество составляет 880 дней: вам нужно рассчитать количество месяцев (например, с помощью PHP).

Если exp_to обнуляется (что имеет смысл, если пользователь все еще работает в той же позиции):

select user_id, sum( datediff( ifnull(exp_to, now()), exp_from) +1 )
from experience
group by user_id;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]