sql - 如何在 sql 中获取过去 1 小时的结果
问题描述
我有这个查询来获取所有小于 10 个字符的 caseid,并且过去一小时前没有 T:
SELECT *
FROM PICKDETAIL
WHERE LENGTH(CASEID) <> 10
AND CASEID NOT LIKE 'T%'
AND TO_CHAR(editdate, 'hh24mi') > TO_CHAR(sysdate - 1/24, 'hh24mi');
但是当我运行它时,我仍然会得到几天前的结果。
我在这里做错了什么?
解决方案
不要转换为字符串。只需使用日期比较:
SELECT pd.*
FROM PICKDETAIL pd
WHERE LENGTH(pd.CASEID) <> 10 AND
pd.CASEID NOT LIKE 'T%' AND
pd.editdate > sysdate - 1/24;
推荐阅读
- azure-web-app-service - 如何一步一步将两个azure linux虚拟机连接在一起
- typescript - ESLint - 每次导入的“no-unused-vars”警告
- html - css box-shadow 没有隐藏在滚动条上
- php - 重定向视图后会话仍然提交
- sql - 大量警告会导致 SSIS 包失败/取消吗?
- javascript - forEach 循环仅适用于最后一项
- c# - 使用 Levenshtein 距离获取字符串的所有变体
- r - 如何用受特定条件限制的其他字段的最大值/最小值替换字段中的值?允许重复条件
- android - Flutter webRTC | 当用户接到另一个电话并接听该电话时,如何结束通话
- html - 为什么当CSS中的背景是线性渐变时过渡不起作用