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

如何编写SQL WHERE条件筛选2021年5-8月周日19点至周五5点的记录

实现逻辑

  • 第一层先限定整体时间范围,和原有查询的时间边界对齐,缩小数据扫描范围提升性能
  • 第二层按周内日期拆分判断规则,仅保留符合时段要求的记录

不同数据库方言写法

SQL Server 版本

注:默认@@DATEFIRST设置为7(周日为一周第一天,周日返回值为1),如果你的库有自定义周起始规则,调整判断对应的数字即可

WHERE 
l1.[PickupTime] BETWEEN '2021/05/01 19:00:00' AND '2021/09/01 05:00:00'
AND (
    -- 周日19:00之后符合
    (DATEPART(WEEKDAY, l1.[PickupTime]) = 1 AND CAST(l1.[PickupTime] AS TIME) >= '19:00:00')
    -- 周一到周四全天符合
    OR DATEPART(WEEKDAY, l1.[PickupTime]) BETWEEN 2 AND 5
    -- 周五05:00之前符合
    OR (DATEPART(WEEKDAY, l1.[PickupTime]) = 6 AND CAST(l1.[PickupTime] AS TIME) <= '05:00:00')
)

MySQL 版本

注:DAYOFWEEK默认规则为周日返回1,周六返回7

WHERE 
l1.`PickupTime` BETWEEN '2021-05-01 19:00:00' AND '2021-09-01 05:00:00'
AND (
    (DAYOFWEEK(l1.`PickupTime`) = 1 AND TIME(l1.`PickupTime`) >= '19:00:00')
    OR DAYOFWEEK(l1.`PickupTime`) BETWEEN 2 AND 5
    OR (DAYOFWEEK(l1.`PickupTime`) = 6 AND TIME(l1.`PickupTime`) <= '05:00:00')
)

内容的提问来源于stack exchange,提问作者Amit Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:30:01