如何获得最近 24 小时内的记录?
Select * from TABLE1 where SENTDATE >= SYSDATE - 1
当我在 00:05 运行上述查询时,它仅在最后五分钟内返回记录。我需要在查询运行后的最后 24 小时内获取记录。
如何在 SQL/Oracle 中实现这一点是否有任何类似于
Select * from TABLE1 where SENTDATE >= sysdate - 24 hrs ?
在过去 5 分钟运行它表明您正在寻找“昨天”,这将是:
sentdate >= trunc(sysdate)-1 and
sentdate < trunc(sysdate)
如果您确实想要确切的最后 24 小时,那么:
sentdate >= sysdate-1 and
sentdate < sysdate
或者:
sentdate > sysdate-1 and
sentdate <= sysdate
要非常小心边界条件,因此在上面使用 >= 和 <,或 > 和 <=。
Try
SELECT *
FROM table1
WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE
通常 sysdate - 1 也会给出带有时间戳的日期,但如果您遇到问题,那么您可以应用以下条件 -
SELECT *
FROM Table1
WHERE Sentdate >= To_Date(To_Char((SYSDATE - 1), 'YYYYMMDD') || ' ' ||
To_Char(SYSDATE, 'HH24:MI:SS'),
'YYYYMMDD HH24:MI:SS')
尝试使用 DateDIFF() 之类的函数:
Select * from TABLE1 where DateDIFF(MINUTES, SENTDATE, SYSDATE) < 1440