因此,我有一个表来保存执行某些任务的雇员的记录。一个任务有一个id、一个taskname、一个雇员以及一个startDate和endDate。
使用@MatBailie在这里提供给我的以下查询(谢谢!),我能够获取每个员工在本年度花在每个任务上的天数:
SELECT
taskname,
employee,
startDate,
endDate,
SUM(DATEDIFF(startDate, endDate)+1) AS total_days,
FROM
schedule
WHERE
startDate<='2023-12-31'
AND
endDate>='2023-01-01'
GROUP BY
employee,
taskname
但是,有时任务 * 会重叠两年 *,例如,当任务的startDate为12月22日,endDate为1月10日时,则该任务的总工期在当年为10天,在下一年为10天,这就是问题所在。因为它计算 * 所有20天 *,就好像它们在 * 今年 * 一样,因为事件符合startDate和endDate要求(“WHERE”子句),然后将整个持续时间加到SUM中。
所以我的问题是:我如何修改我的查询,使它只计算指定时间范围(即当前年份或季度)内的天数(以SUM(DATEDIFF)表示)。
提前感谢您的帮助!
1条答案
按热度按时间qvtsj1bj1#