1) 步长为小时,直接转换时间为小时:select trunc(sysdate,’hh24’) from dual 返回当前时间整点
2) 步长为半小时,转换为0分和30分两段:selectcasewhen (sysdate-trunc(sysdate,'hh24'))>1/48then trunc(sysdate,'hh24')+1/48else trunc(sysdate,'hh24') endcasefrom dual
3) 步长为天:select trunc(sysdate) from dual;
4) 步长为周:
-一周的第一天
select to_char(sysdate,'d') from dual;
--得到星期几
select initcap(to_char(sysdate,'day')) from dual;
--取当前时间是一年中的第几周(按实际日历的)
select to_char(sysdate,'iw') from dual;
---取当前时间是一年中的第几周(从1.1开始算)
select to_char(sysdate,'ww') from dual;
--取当前时间是一个月中的第几周(从1日开始算)
select to_char(sysdate,'w') from dual;
--本周第一天(星期天算起)
selecttrunc(sysdate,'d') from dual;
5) 步长为月:select trunc(sysdate,'mm') from dual
6) 步长为季:select trunc(sysdate,'q') from dual;返回本季的第一天
7) 步长半年:selectcasewhensysdate > add_months(trunc(sysdate,'yyyy'),6) then add_months(trunc(sysdate,'yyyy'),6) else trunc(sysdate,'yyyy') endcase from dual
8) 步长为年:select trunc(sysdate,'yyyy') from dual
9) 步长为旬:selectcasewhensysdate <trunc(sysdate,'mm')+9 then trunc(sysdate,'mm') whensysdate >=trunc(sysdate,'mm')+19then trunc(sysdate,'mm')+19else trunc(sysdate,'mm')+9endcasefrom dual返回所在旬首日