2013-05-21 31 views
1

如何在最後24小時內獲取記錄?如何在00:05時運行查詢時獲得最近24小時內的記錄

Select * from TABLE1 where SENTDATE >= SYSDATE - 1 

當我在00:05時運行上述查詢時,它僅在最近五分鐘內返回記錄。我需要從查詢運行的最後24小時內獲取記錄。

這怎麼可以在SQL中實現/甲骨文 有沒有什麼辦法,這將是類似於

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

'SYSDATE-1' *是*「sysdate-24 hrs」。也許你的'SENTDATE'沒有時間部分(即對所有記錄設置爲0:00)? - 在這種情況下,您還需要截斷sysdate - 例如TRUNC(SYSDATE)-1'按照David的回答。 –

回答

0

嘗試

SELECT * 
    FROM table1 
WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE 
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') 
-1

儘量使用像DATEDIFF)的函數(:

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

5分鐘過去暗示你要尋找的「昨天」運行它,這將是:

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

如果你想確切的過去24小時,然後:

sentdate >= sysdate-1 and 
sentdate < sysdate 

或:

sentdate > sysdate-1 and 
sentdate <= sysdate 

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

相關問題