最近須要取一個時間,就是最近的半小時整點時間,好比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