首页 > 解决方案 > 如何在 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');

但是当我运行它时,我仍然会得到几天前的结果。

我在这里做错了什么?

标签: sql

解决方案


不要转换为字符串。只需使用日期比较:

SELECT pd.*
FROM PICKDETAIL pd
WHERE LENGTH(pd.CASEID) <> 10 AND
      pd.CASEID NOT LIKE 'T%' AND 
      pd.editdate > sysdate - 1/24;

推荐阅读