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

Oracle SQL如何一次性查询多日同一时间段的数据?

可以用单条SQL实现,推荐以下几种简洁的写法:

方法一:拆分日期与时间条件(适合非连续日期)

将时间字段拆分为日期和时间两部分,分别匹配目标日期集合和时段范围,无需重复编写完整时间区间:

SELECT * FROM table
WHERE organization = 'ABC'
  -- 匹配目标日期
  AND DATE(starttime) IN ('2022-09-12', '2022-09-13', '2022-09-14')
  -- 匹配当天8:00-17:00的时段
  AND TIME(starttime) BETWEEN '08:00:00' AND '17:00:00';

*注意:不同数据库的日期时间函数略有差异:

  • SQL Server 替换为 CAST(starttime AS DATE) 和 CAST(starttime AS TIME)
  • Oracle 替换为 TRUNC(starttime) 和 TO_CHAR(starttime, 'HH24:MI:SS')*

方法二:利用连续日期范围(适合连续日期)

如果查询的日期是连续区间(比如9月12-14日),可以结合总时间范围和时段过滤,写法更简洁:

SELECT * FROM table
WHERE organization = 'ABC'
  AND starttime BETWEEN '2022-09-12 08:00:00' AND '2022-09-14 17:00:00'
  AND TIME(starttime) BETWEEN '08:00:00' AND '17:00:00';

这种写法既限定了整体时间范围,又确保每条记录的时间落在当天的目标时段内,避免包含连续日期首尾天的非目标时段数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:31:24