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

使用sysdate查询TIMESTAMP(6)数据行数不符,求原因及周调度方案

问题原因及解决方案

为什么使用sysdate返回行数更少?

  • sysdate是Oracle的DATE类型,仅精确到秒,返回的是当前系统的具体时间(比如周日14:30执行时,sysdate就是当天14:30)。
  • 当你写sysdate - 5时,得到的是5天前的同一时刻(比如周二14:30),而非需求中的周一00:00;sysdate - 1得到的是1天前的同一时刻(比如周六14:30),而非周六23:59:59。
  • 这导致查询范围缩小为「周二14:30到周六14:30」,漏掉了周一00:00至周二14:30、周六14:30至23:59:59的所有数据,因此返回行数更少。

满足需求的正确SQL写法

你的需求是每周日自动执行,获取本周一00:00:00.000000至周六23:59:59.999999的数据,推荐两种可靠写法:

写法一:用截断函数精准定位周范围(推荐)

利用trunc(sysdate, 'IW')获取ISO周的周一00:00:00(IW规则下周一为每周第一天),通过< 下周一00:00避免TIMESTAMP微秒精度的遗漏问题:

select *
from annual_report_order
where report_order_date >= trunc(sysdate, 'IW')
  and report_order_date < trunc(sysdate, 'IW') + interval '6' day;

写法二:显式指定结束时间

如果需要严格匹配到周六23:59:59.999999,可以直接构造结束时间:

select *
from annual_report_order
where report_order_date >= trunc(sysdate, 'IW')
  and report_order_date <= trunc(sysdate, 'IW') + interval '5' day + interval '23:59:59.999999' second;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:37:10