mysql & php - 如何从多个日期范围计算总经验年数?

mysql & php - How to calculate total year of experience from multiple date range?

我想计算每个特定用户 ID 的总体验年份和月份。 user_id 在 table 中可以是多个,如下所示。这里对于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 它将 return 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;