7.1 加减日、月、年

在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 <=1;雇用日期 加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

7.2 加减时、分、秒

上面讲过,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 awhere rownum <= 1;

如果执行时,报错

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

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


7.3 日期间隔之时、分、秒

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 wherea.ename in ('ALLEN', 'WARD')) x;DURATION       间隔小时       间隔分钟        间隔秒
---------- ---------- ---------- ----------2         48       2880     172800

7.4 日期间隔之日、月、年

加减月份用函数 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

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

问题

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

解决方案

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

  1. 生成一年内的所有日期。

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

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

with x as(select level lvlfrom dualconnect by level <=(add_months(trunc(sysdate, 'y'), 12) - trunc(sysdate, 'y')))
select to_char(trunc(sysdate, 'y') + lvl - 1, 'DAY'), count(*)from xgroup by to_char(trunc(sysdate, 'y') + lvl - 1, 'DAY');

Oracle查询优化-07日期运算相关推荐

  1. 只是简单读了读《oracle查询优化改写》,就让我获益匪浅,想写好sql,这一本书就够了!

    目录 写在前面 基础知识 空值 返回前几行 获取随机数 like 排序 union 分页(6-10条) 表关联 复制表 日期 日期加减 trunc对于日期的用法 获取时间 判断是否是闰年(只需要判断二 ...

  2. 在oracle中处理日期大全

    在oracle中处理日期大全 TO_DATE格式   Day:   dd number 12   dy abbreviated fri   day spelled out friday   ddspt ...

  3. oracle 日期 extract,ORACLE——EXTRACT() 截取日期时间的函数使用

    1.截取日期的 年: --使用方法 EXTRACT(YEAR FROM DATE) SQL> SELECT EXTRACT( YEAR FROM SYSDATE ) FROM DUAL; --结 ...

  4. Oracle关于时间/日期的操作

    在oracle中有很多关于日期的函数,如: 1.add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_mo ...

  5. oracle 日期转换成毫秒数,ORACLE:毫秒与日期的相互转换,获取某天的信息

    毫秒转换为日期 SELECT TO_CHAR(1406538765000 / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY- ...

  6. 【书评:Oracle查询优化改写】第三章

    [书评:Oracle查询优化改写]第三章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 _ ...

  7. oracle中的日期函数

    Oracle的日期函数 oralce 发表于 2006-3-23 10:08:00 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计.那在 ...

  8. oracle 转number日期,oracle number型日期转date型日期

    在搞数据库时,发现有这样的一个字段,类型是NUMBER(38),查看了一下里面的数据,都是这样的, 1323957678114 1321326994295 1322129306804 13221297 ...

  9. [FUNC]AHK有没有日期运算?比如,20-DEC-2018 减2天

    AHK有没有日期运算?比如,20-DEC-2018 减2天 回答网友提问如下: ;~功能:计算日期减法 ;~作者:sunwind 1576157 ;~最新版地址:https://blog.csdn.n ...

最新文章

  1. C#线程同步的几种方法
  2. 分割数组的最大值—leetcode410
  3. php按照二维数组某个字段排序,PHP 二维数组根据某个字段排序
  4. HTML入门之003
  5. android widget ViewFlipper
  6. C# 图片反色处理 图片夜间模式
  7. win10 家庭版 升级专业版
  8. 怎么利用pytorch训练好的模型测试单张图片
  9. 如何在WhatsApp中设置两步验证
  10. 织梦后台登录出现500错误解决方案
  11. 5GHz超频教程:技嘉Z390 AORUS MASTER主板+酷睿i9
  12. 解开硬盘逻辑死锁的一种有效方法 (转)
  13. 乌镇互联网大会:大佬们都爱AI
  14. python中logging库使用总结
  15. Java Security(JCE基本概念)
  16. 实现QT打开Word文档
  17. android 老年模式 oppo,善用手机“老人模式”,OPPO这几大核心功能很关键
  18. android添加任务到最近任务列表
  19. 有一种情愫,它不属于暧昧
  20. (翻译)适当挑战(Appropriate challenge)

热门文章

  1. 为什么要使用 using namespace std
  2. Markovdecisionprocesses_Discretestochasticdynamicprogramming下载
  3. 如何将html表单转换成url,JS表单传值和URL编码转换
  4. 时间复杂度为on的排序算法_快速排序的时间复杂度为啥是为O(nlogn)
  5. Leetcode 142. 环形链表 II (每日一题 20210902)
  6. 知识图谱学习笔记-风控算法介绍
  7. 文巾解题 20有效的括号
  8. 文巾解题1738. 找出第 K 大的异或坐标值
  9. 【数学建模】MATLAB应用实战系列(九十一)-熵权法应用案例(附MATLAB和Python代码)
  10. 机器学习算法源码全解析(二)-范数规则化之L0、L1与L2范数