Oracle查询优化日期运算的示例分析
小编给大家分享一下Oracle查询优化日期运算的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
加减日、月、年
在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数.
selecta.hiredate雇用日期,a.hiredate+5加5天,a.hiredate-5减5天,add_months(hiredate,5)加5个月,add_months(hiredate,-5)减5个月,add_months(hiredate,5*12)加5年,add_months(hiredate,-5*12)减5年fromempawhererownum<=1;雇用日期加5天减5天加5个月减5个月加5年减5年-----------------------------------------------------------------------------1980-12-171980-12-221980-12-121981-05-171980-07-171985-12-171975-12-17
加减时、分、秒
上面讲过,date可以直接加减天数,那么1/24就是一小时,分钟与秒的加减类同。
selecta.hiredate,a.hiredate-5/24/60/60减5秒,a.hiredate+5/24/60/60加5秒,a.hiredate-5/24/60减5分钟,a.hiredate+5/24/60加5分钟,a.hiredate-5/24减5小时,a.hiredate+5/24加5小时fromempawhererownum<=1;
如果执行时,报错
数据库服务器端的编码和客户端字符集编码不一致。
我这边用的数据库西班牙语,不支持中文。
日期间隔之时、分、秒
SQL>selectduration,duration*24间隔小时,duration*24*60间隔分钟,duration*24*60*60间隔秒from(select(max(a.hiredate)-min(a.hiredate))asdurationfromempawherea.enamein('ALLEN','WARD'))x;DURATION间隔小时间隔分钟间隔秒----------------------------------------2482880172800
日期间隔之日、月、年
加减月份用函数 add_months, 而计算月份间隔就要用函数months_between
selectmax_hd-min_hd间隔天,months_between(max_hd,min_hd)间隔月,months_between(max_hd,min_hd)/12间隔年from(selectmin(hiredate)min_hd,max(hiredate)max_hdfromemp)x;间隔天间隔月间隔年------------------------------234877.19354836.43279569
计算一年中周内各日期的次数
问题
计算一年中周内各日期(星期日、星期一 ……星期六)的次数。
解决方案
要计算一年中周内各日期分别有多少个,必须:
生成一年内的所有日期。
设置日期格式,得到每个日期对应为星期几。
计数周内各日期分别有多少个。
withxas(selectlevellvlfromdualconnectbylevel<=(add_months(trunc(sysdate,'y'),12)-trunc(sysdate,'y')))selectto_char(trunc(sysdate,'y')+lvl-1,'DAY'),count(*)fromxgroupbyto_char(trunc(sysdate,'y')+lvl-1,'DAY');
以上是“Oracle查询优化日期运算的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。