最近在做项目,一时时间的处理方法不知所措,所以最近研究了一下!
这些是在写SQL语句时候很有效的方法,原来我用很笨的方法,现在自己探索了一下,其实在oracle中很多自带的日期处理函数还是很有用的,下面列出本人所写的一些供参考:
1.获取两个日期之间的天数:select (sysdate-to_date("2008-4-5","yyyy-MM-dd")) from dual; 获得的是今天到08年4月5号之间的天数. select round(sysdate-add_months(sysdate, -1)) from dual;查询的是一个月前今天到现在的天数,获得的天数四舍五入.如果把round改为trunc则去掉小数部分.
2.获得两个日期之间的月数select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd')) from dual;获得从08年11月12号到现在的月数!
3.获得改变后的时间,A:select sysdate-1 from dual 获得一天后(+1)时间或者一天前(-1)的时间;B:获得当前时间减1天减1小时的时间select sysdate-1-1/24 from dual;依次类推获得当前时间减1天减1小减1分钟减1秒钟时间即为:select sysdate-1-1/24-1/(24*60)-1/(24*60*60).
4.获得上月第一天select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;
5.获得上月今天select to_char(add_months(sysdate,-1),'yyyy-MM-dd') from dual;
6.获得上月最后一天select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') from dual;
7.按周进行统计select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');
8.月进行统计select to_char(sysdate,'mm') from dual group by to_char(sysdate,'yyyymm');
9.按年进行统计select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');
10.按季度进行统计:select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');