Oracle查询优化日期运算的示例分析

68次阅读
没有评论

共计 1914 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 Oracle 查询优化日期运算的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  加减日、月、年

在 Oracle 中,date 类型可以直接加减天数,而加减月份要用 add_months 函数.

select a.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 年
 from emp a where rownum  

雇用日期   加 5 天   减 5 天   加 5 个月   减 5 个月   加 5 年   减 5 年 ----------- ----------- ----------- ----------- ----------- ----------- ----------- 1980-12-17 1980-12-22 1980-12-12 1981-05-17 1980-07-17 1985-12-17 1975-12-17

加减时、分、秒

上面讲过,date 可以直接加减天数,那么 1 /24 就是一小时,分钟与秒的加减类同。

select a.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 小时
 from emp a
 where rownum  = 1;

如果执行时,报错

Oracle 查询优化日期运算的示例分析

数据库服务器端的编码和客户端字符集编码不一致。

我这边用的数据库西班牙语,不支持中文。

日期间隔之时、分、秒

SQL  select duration,
 duration * 24  间隔小时,
 duration * 24 * 60  间隔分钟,
 duration * 24 * 60 * 60  间隔秒
 from (select (max(a.hiredate) - min(a.hiredate)) as duration from emp a where
 a.ename in (ALLEN ,  WARD)) x;

 DURATION  间隔小时   间隔分钟   间隔秒 ---------- ---------- ---------- ----------  2 48 2880 172800

日期间隔之日、月、年

加减月份用函数 add_months,而计算月份间隔就要用函数 months_between

select max_hd - min_hd  间隔天,
 months_between(max_hd, min_hd)  间隔月,
 months_between(max_hd, min_hd) /12  间隔年
 from (select min(hiredate) min_hd, max(hiredate) max_hd from emp) x;

---------- ---------- ----------  2348 77.1935483 6.43279569

计算一年中周内各日期的次数

问题

计算一年中周内各日期(星期日、星期一 ……星期六)的次数。

解决方案

要计算一年中周内各日期分别有多少个,必须:

生成一年内的所有日期。

设置日期格式,得到每个日期对应为星期几。

计数周内各日期分别有多少个。

with x as
 (select level lvl
 from dual
 connect by level  =
 (add_months(trunc(sysdate,  y), 12) - trunc(sysdate,  y)))
select to_char(trunc(sysdate,  y) + lvl - 1,  DAY ), count(*)
 from x
 group by to_char(trunc(sysdate,  y) + lvl - 1,  DAY

Oracle 查询优化日期运算的示例分析

以上是“Oracle 查询优化日期运算的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1914字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)