如何在00:05运行查询时在最近24小时内获取记录

时间:2013-05-21 07:22:39

标签: sql oracle

如何在最后24小时内获取记录?

Select * from TABLE1 where SENTDATE >= SYSDATE - 1 

当我在00:05运行上述查询时,它仅在最后五分钟内返回记录。我需要在运行查询后的最后24小时内获取记录。

如何在SQL / Oracle中实现这一目标 有什么方法与

类似
Select * from TABLE1 where SENTDATE >= sysdate - 24 hrs ?

4 个答案:

答案 0 :(得分:2)

在5分钟后运行它表示你正在寻找“昨天”,这将是:

sentdate >= trunc(sysdate)-1 and
sentdate <  trunc(sysdate)

如果您确实想要确切的过去24小时,那么:

sentdate >= sysdate-1 and
sentdate <  sysdate

或:

sentdate >  sysdate-1 and
sentdate <= sysdate

要非常小心边界条件,因此使用&gt; =和&lt ;,或&gt;和&lt; =在上面。

答案 1 :(得分:0)

尝试

SELECT *
  FROM table1
 WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE

答案 2 :(得分:0)

通常sysdate - 1也会给出带时间戳的日期,但如果您遇到问题,那么您可以按以下方式申请条件 -

SELECT *
  FROM Table1
 WHERE Sentdate >= To_Date(To_Char((SYSDATE - 1), 'YYYYMMDD') || ' ' ||
                           To_Char(SYSDATE, 'HH24:MI:SS'),
                           'YYYYMMDD HH24:MI:SS')

答案 3 :(得分:-1)

尝试使用类似DateDIFF()的函数:

    Select * from TABLE1 where DateDIFF(MINUTES, SENTDATE, SYSDATE) < 1440