MySQL查询过滤:筛选未到开始时间的待处理请假申请
解决请假申请的日期+时间联合筛选问题
我来帮你搞定这个时间筛选的需求!你已经完成了日期部分的过滤,接下来只需要把日期和时间的逻辑结合起来,分两种场景处理就好:
- 当请假开始日期是今天时:需要确保当前时间还没到请假的开始时间(
startTime) - 当请假开始日期在今天之后时:不管
startTime是什么,这条申请肯定还没到生效时间,直接保留
把这两个逻辑用OR组合,和你已有的条件结合,最终的SQL语句如下:
SELECT ID, name, email, startDate, endDate, startTime, endTime, reason, specialLeave FROM request WHERE requestStatus = 'In behandeling' AND ( -- 今天的申请,且当前时间早于请假开始时间 (CURDATE() = startDate AND CURTIME() < startTime) OR -- 申请日期在今日之后,直接符合条件 CURDATE() < startDate );
逻辑说明:
CURDATE() = startDate AND CURTIME() < startTime:精准筛选今天提交、且还没到请假开始时间的申请CURDATE() < startDate:所有未来日期的申请,无需判断时间直接保留- 用括号把两个条件包起来,确保和
requestStatus的过滤逻辑是正确的“且”关系
如果你的startDate和startTime其实可以合并成一个datetime类型字段的话,也可以简化成直接对比NOW() < CONCAT(startDate, ' ', startTime),不过分开字段的情况下,上面的写法更清晰高效。
内容的提问来源于stack exchange,提问作者OriginDutch
相关产品推荐
相关产品推荐

