假设当前的SYSDATE是03-APR-17 03.35.49,我的查询需要得到以下值:
一个。 SYSDATE四舍五入到最接近的小时(在本例中为03.00.00)
湾减1小时= 02.00.00
我试过并发现使用“-1/24”会减去一小时的日期时间。有点新的Oracle在第一部分如此挣扎。 不确定我是否应该使用ROUND或FLOOR或任何其他功能。 任何帮助表示赞赏。
答案 0 :(得分:7)
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
答案 1 :(得分:1)
这是截断值:
select trunc(sysdate, 'hh')
from dual;
围绕它:
select trunc(sysdate + interval '30' minute, 'hh')
from dual;
或者:
select round(sysdate, 'hh')
from dual;
我忘了round()
也可以采用格式参数。
答案 2 :(得分:0)
我的查询需要获取以下值之间的值:
一个。 SYSDATE四舍五入到最接近的小时(在本例中为03.00.00)
湾减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' );