如何在最后24小时内获取记录?
Select * from TABLE1 where SENTDATE >= SYSDATE - 1
当我在00:05运行上述查询时,它仅在最后五分钟内返回记录。我需要在运行查询后的最后24小时内获取记录。
如何在SQL / Oracle中实现这一目标 有什么方法与
类似Select * from TABLE1 where SENTDATE >= sysdate - 24 hrs ?
答案 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