博客 数据仓库中时间类型操作(初级)日、月、年、时、分、秒之差及时间间隔计算-SQL开发实战系列(十六)

数据仓库中时间类型操作(初级)日、月、年、时、分、秒之差及时间间隔计算-SQL开发实战系列(十六)

   数栈君   发表于 2023-03-02 15:18  217  0

本篇文章讲解的主要内容是:日、月、年、时、分、秒之差及时间间隔计算。
【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。

一、加减日、月、年
在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数:

SQL> SELECT hiredate AS 聘用日期,
2 hiredate - 5 AS 减5天,
3 hiredate + 5 AS 加5天,
4 add_months(hiredate, -5) AS 减5个月,
5 add_months(hiredate, 5) AS 加5个月,
6 add_months(hiredate, -5 * 12) AS减5年,
7 add_months(hiredate, 5 * 12) AS加5年
8 FROM emp
9 WHERE ROWNUM <= 1;

聘用日期 减5天 加5天 减5个月 加5个月 AS减5年 AS加5年
----------- ----------- ----------- ----------- ----------- ----------- -----------
1980-12-17 1980-12-12 1980-12-22 1980-7-17 1981-5-17 1975-12-17 1985-12-17

二、加减时、分、秒
SQL> SELECT hiredate AS 聘用日期,
2 hiredate - 5 / 24 / 60 / 60 AS 减5秒,
3 hiredate + 5 / 24 / 60 / 60 AS 加5秒,
4 hiredate - 5 / 24 / 60 AS 减5分钟,
5 hiredate + 5 / 24 / 60 AS 加5分钟,
6 hiredate - 5 / 24 AS 减5小时,
7 hiredate + 5 / 24 AS 加5小时
8 FROM emp
9 WHERE ROWNUM <= 1;

聘用日期 减5秒 加5秒 减5分钟 加5分钟 减5小时 加5小时
----------- ----------- ----------- ----------- ----------- ----------- -----------
1980-12-17 1980-12-16 1980-12-17 1980-12-16 1980-12-17 1980-12-16 1980-12-17

SQL>

三、日期间隔之时、分、秒
两个date相减,得到的就是天数,乘以24就是小时,以此类推,可以计算出秒。

SQL>
SQL> SELECT 间隔天数,
2 间隔天数*24 AS 间隔小时,
3 间隔天数*24*60 AS 间隔分,
4 间隔天数*24*60*60 AS 间隔秒
5 FROM( SELECT MAX(hiredate)-MIN(hiredate) AS 间隔天数
6 FROM emp
7 WHERE ename IN ('WARD','ALLEN'))X;

间隔天数 间隔小时 间隔分 间隔秒
---------- ---------- ---------- ----------
2 48 2880 172800

SQL>

四、日期间隔之日、月、年
加减月份用函数add_months,而计算月份间隔就要用函数months_between。

SQL> SELECT max_hd - min_hd 间隔天,
2 months_between(max_hd, min_hd) 间隔月,
3 months_between(max_hd, min_hd) / 12 间隔年
4 FROM (SELECT min(hiredate) min_hd, MAX(hiredate) max_hd FROM emp) x;

间隔天 间隔月 间隔年
---------- ---------- ----------
14906.6928 489.764283 40.8136903

总结
本章介绍的关于时间的计算比较简单,主要是为了后面时间计算文章做铺垫!


————————————————

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群