2017-04-12 38 views
0

例如,我有表如下數據:Oracle查詢檢查記錄存在與否 - 每小時

FORMID | QUANTITY | DATEADDED 
1  | 150  | 4/12/2017 2:33:27 PM 
2  | 100  | 4/12/2017 3:15:10 PM 

我希望查詢檢查數據每小時存在或不基於當前時間。

Current time: 18:00 

所以當查詢檢查數據,應該沒有數據,因爲我們看到的最後一個數據是在下午3時15分10秒和當前時間是18:00(超過2小時前)。

我不知道該怎麼做呢,

SELECT * FROM TBQUANTITY WHERE... 
+0

所以你需要18:00:00和18:59:59之間的數據? – Nitish

+0

如果上次日期是'4/12/2017 3:15:10 PM',當前時間是'4/12/2017 4:15:10 PM',那麼這行應該返回嗎? –

回答

1

這將讓所有行DATEADDED列現在(使用服務器時間),一小時前之間。

SELECT * 
FROM TBQUANTITY 
WHERE dateadded BETWEEN SYSDATE - INTERVAL '1' HOUR AND SYSDATE 
0

對於一個簡單的即席查詢,看看是否有一些記錄使用SYSDATE如其他答案建議。

如果您的目標是獲取所有記錄並僅處理每條記錄一次,則應該更加小心。

可以每小時安排查詢從塔最後一個小時中選擇數據如

select * from T where DATEADDED > trunc(sysdate,'HH') -1/24 
    and DATEADDED <= trunc(sysdate,'HH') 

注意這個查詢選擇最後一個小時的時間到的數據(上HHTRUNC) 例如從12-04-2017 17:00:00到12-04-2017 18:00:00,並且您使用半開區間而不是BETWEEN,該選項將選擇記錄,並將整個小時的時間戳記記錄兩次。