【发布时间】:2016-03-30 06:32:49
【问题描述】:
如果员工申请休假:From Date 是“2016-03-30”,To Date 是“2016-04-02”,那么输出将是“In 3rd month leave days should be 2”和“In 4th月假天数应为 1"。 我有表:
UserID FromDate ToDate LeaveDuration
------------------------------------------------------
0001 20/03/2016 21/03/2016 1
0001 30/03/2016 02/04/2016 2
在第 2 条记录中,第 3 个月应考虑 2 天,第 4 个月应考虑 1 天。 我尝试了以下查询:
select sum(datediff(ToDate,FromDate)) as Total
from wp_ag_assign_leave
where UserId=18
and LeaveType="Carry Forward Leave"
and (EXTRACT(MONTH FROM CURDATE())=EXTRACT(MONTH FROM FromDate)
OR EXTRACT(MONTH FROM CURDATE())=EXTRACT(MONTH FROM ToDate))
请帮我解决一下
【问题讨论】:
-
什么?请用一些数据样本和预期输出更新您的问题
-
尝试每月使用 GROUP BY,一个有用的链接 stackoverflow.com/a/18087708/4229270
-
您的查询提供的输出与您期望的相反。
-
更严重的是,您的示例中有一些奇怪的地方,它缺少一个重要的规则:确实,第一行 20/03 和 21/03 是 1 天。第二行 30/03 31/03 01/04 和 04/04 为 2 天。它应该是 3,除非考虑到休息日(如我所说)