1

如何获得最近 24 小时内的记录?

Select * from TABLE1 where SENTDATE >= SYSDATE - 1 

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

如何在 SQL/Oracle 中实现这一点是否有任何类似于

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

4 回答 4

2

在过去 5 分钟运行它表明您正在寻找“昨天”,这将是:

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

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

sentdate >= sysdate-1 and
sentdate <  sysdate

或者:

sentdate >  sysdate-1 and
sentdate <= sysdate

要非常小心边界条件,因此在上面使用 >= 和 <,或 > 和 <=。

于 2013-05-21T07:47:09.813 回答
0

Try

SELECT *
  FROM table1
 WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE
于 2013-05-21T07:38:07.200 回答
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')
于 2013-05-21T07:40:09.037 回答
-1

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

    Select * from TABLE1 where DateDIFF(MINUTES, SENTDATE, SYSDATE) < 1440
于 2013-05-21T07:44:21.750 回答