sql - sql中的日期时间过滤器
问题描述
我有一个从 sql 查询每小时生成的报告。这里的请求是生成从昨天晚上 8 点到今天中午 12 点的数据。我正在使用以下查询,但没有得到正确的数据:
select * from roster_report where job_start > TRUNC(SYSDATE-1) + 20/24 ;
假设今天的日期是 4 月 29 日,4 月 29 日晚上 11:15 生成的报告正确显示了 4 月 29 日晚上 8:00 到晚上 11:15 的数据。数据在上午 00:00 之后变得不正确,它获取 4 月 29 日本身而不是 4 月 30 日的数据。
该查询将在每小时生成报告后使用。我在 oracle sql developer 中运行它。
解决方案
这里有两种方法:
SELECT *
FROM ROSTER_REPORT
WHERE JOB_START BETWEEN (TRUNC(SYSDATE - 1) + 20/24)
AND TRUNC(SYSDATE) + 12/24 ;
或者
SELECT *
FROM ROSTER_REPORT
WHERE JOB_START BETWEEN TO_DATE(TO_CHAR(SYSDATE-1,'DD/MM/RRRR')||' 20:00','DD/MM/RRRR HH24:MI')
AND TO_DATE(TO_CHAR(SYSDATE ,'DD/MM/RRRR')||' 12:00','DD/MM/RRRR HH24:MI');
推荐阅读
- javascript - 功能策略:跳过不支持的功能名称“画中画”/“自动播放”/“加密媒体”
- mysql - 订购时查询缓慢
- haskell - 从序列 1,2,3,4,5 ......使用 Haskell 打印 1,5,9,13....
- facebook - 获取动态展示位置资产定制广告创意的 Effective_object_story_id
- javascript - 是否可以提交由 Ajax 生成的表单?
- laravel - 录制音频,提交,将其存储在服务器中,并将其路径存储在数据库中。Laravel
- html - 是否可以在 fullpage.js 的部分及其内容之间插入蒙版背景?
- bash - 如何在已挂载的文件系统上使用 chown
- python - python有条件代码解释吗?
- c++ - 为什么 C/++ scanf 函数需要引用变量作为参数?