You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:52:32