Я хочу рассчитать общий год опыта и месяц для каждого конкретного идентификатора пользователя. user_id может быть кратным в таблице, как показано ниже. Здесь для user_id 14 общий диапазон опыта будет с 2010-01-03 по 2013-11-30, и ожидаемый результат будет 3 года 11 месяцев. Как я могу сделать это в php или mysql?
Комментарии актуальны, но неполны для вашего случая.
Если exp_to
не обнуляется
select user_id, sum( datediff(exp_to, exp_from) +1 )
from experience
group by user_id;
Заметки:
+1
в сумме, потому что для пользователя 25 он будет возвращать 0, тогда как мы можем прилично считать, что пользователь работал 1 деньЕсли exp_to
обнуляется (что имеет смысл, если пользователь все еще работает в той же позиции):
select user_id, sum( datediff( ifnull(exp_to, now()), exp_from) +1 )
from experience
group by user_id;
Других решений пока нет …