oracle 获取最近的整点、半点时间

最近须要取一个时间,就是最近的半小时整点时间,好比12点,12点半等。sql

 

第一种写法编码

select trunc(sysdate, 'hh24') + decode(sign(trunc(sysdate, 'mi') - trunc(sysdate, 'hh24') - 1/48), 1, 1/48, 0) t from dual;

 第二种写法code

select trunc(sysdate, 'hh24') + decode(sign(to_number(to_char(sysdate, 'mi')) - 30), 1, 1/48, 0) t from dual;

这两种方法用循环50W次测时间差异不大。class

这里直接用sign取正负,再用decode编码获得是否须要加半小时时间。第一种写法是时间加减,第二种写法是取得分钟数转整数再作减法。date

本身记录一下,就是不知道有没有其余好的写法。select

相关文章
相关标签/搜索