假設當前SYSDATE是03-APR-17 03.35.49,我的查詢需要得到之間的值:四捨五入甲骨文SYSDATE到最接近的小時
一個。 SYSDATE四捨五入到最接近的通過小時(在這種情況下爲03.00.00)
b。減去1小時= 02.00.00
我試過並發現使用「-1/24」返回日期時間與扣除小時。有點新到甲骨文,所以在第一部分掙扎。 不知道我是否應該使用ROUND或FLOOR或任何其他功能。 任何幫助表示讚賞。
假設當前SYSDATE是03-APR-17 03.35.49,我的查詢需要得到之間的值:四捨五入甲骨文SYSDATE到最接近的小時
一個。 SYSDATE四捨五入到最接近的通過小時(在這種情況下爲03.00.00)
b。減去1小時= 02.00.00
我試過並發現使用「-1/24」返回日期時間與扣除小時。有點新到甲骨文,所以在第一部分掙扎。 不知道我是否應該使用ROUND或FLOOR或任何其他功能。 任何幫助表示讚賞。
select sysdate,
trunc(sysdate, 'hh') as truncated,
round(sysdate, 'hh') as rounded
from dual;
SYSDATE TRUNCATED ROUNDED
------------------- ------------------- -------------------
04/03/2017 15:54:22 04/03/2017 15:00:00 04/03/2017 16:00:00
這是截斷值:
select trunc(sysdate, 'hh')
from dual;
要圍着它
select trunc(sysdate + interval '30' minute, 'hh')
from dual;
或者:
select round(sysdate, 'hh')
from dual;
我忘記round()
也可以採取一個format參數。
我的查詢需要得到之間的值:
一個。 SYSDATE四捨五入到最接近的通過小時(在這種情況下爲03.00.00)
b。一減1小時= 02.00.00
您可以使用TRUNC(date_value, format_mask)
覈減的INTERVAL
文字:
SELECT *
FROM your_table
WHERE date_column BETWEEN TRUNC(SYSDATE, 'hh24') - INTERVAL '1' HOUR
AND TRUNC(SYSDATE, 'hh24');
「四捨五入」到最近的** **通過每小時不叫「四捨五入」的說法,它被稱爲「截斷」。 (然後很容易記住使用哪個功能!) – mathguy
謝謝大家的幫助! – Adi