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

Oracle查询:筛选指定日期范围且时间在22:00-07:00的数据

Oracle查询:筛选指定日期范围且时间在晚10点至早7点的数据

要在原有日期筛选基础上,进一步过滤出时间处于22:00到次日07:00的数据,可通过提取IMPORT_START字段的小时部分,结合逻辑判断实现。由于该时间段跨午夜,需用OR连接两个时间区间条件:

优化后的查询语句

SELECT IMPORT_START FROM PROTOCOLS
WHERE IMPORT_START >= DATE '2022-01-01' 
  AND IMPORT_START < DATE '2023-01-01'  -- 注意:改用<而非<=,确保包含2022-12-31当天的所有时间
  AND (
    EXTRACT(HOUR FROM IMPORT_START) >= 22 
    OR EXTRACT(HOUR FROM IMPORT_START) <= 7
  );

关键说明

  1. 日期范围修正:原查询中IMPORT_START <= DATE '2022-12-31'会排除2022-12-31当天00:00之后的所有数据,改用IMPORT_START < DATE '2023-01-01'可完整包含2022年全年的所有时间点。
  2. 时间筛选逻辑:
    • EXTRACT(HOUR FROM IMPORT_START)用于提取日期字段中的24小时制小时数
    • 晚10点及以后对应小时数≥22,早7点及以前对应小时数≤7,两者用OR连接覆盖跨午夜的时间段

替代实现方式(字符串转换)

若偏好字符串格式判断,也可使用TO_CHAR函数:

SELECT IMPORT_START FROM PROTOCOLS
WHERE IMPORT_START >= DATE '2022-01-01' 
  AND IMPORT_START < DATE '2023-01-01'
  AND (
    TO_CHAR(IMPORT_START, 'HH24') >= '22'
    OR TO_CHAR(IMPORT_START, 'HH24') <= '07'
  );

不过从性能角度,EXTRACT的数值对比比字符串转换更高效,推荐优先使用前者。

内容的提问来源于stack exchange,提问作者Tom el Safadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:39:20