当前位置: 首页 > news >正文

【SQL开发实战技巧】系列(十六):时间类型操作(上):日、月、年、时、分、秒之差及时间间隔计算

系列文章目录

【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事
【SQL开发实战技巧】系列(二):简单单表查询
【SQL开发实战技巧】系列(三):SQL排序的那些事
【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
【SQL开发实战技巧】系列(五):从执行计划看IN、EXISTS 和 INNER JOIN效率,我们要分场景不要死记网上结论
【SQL开发实战技巧】系列(六):从执行计划看NOT IN、NOT EXISTS 和 LEFT JOIN效率,记住内外关联条件不要乱放
【SQL开发实战技巧】系列(七):从有重复数据前提下如何比较出两个表中的差异数据及对应条数聊起
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的写法!
【SQL开发实战技巧】系列(十):从拆分字符串、替换字符串以及统计字符串出现次数说起
【SQL开发实战技巧】系列(十一):拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数
【SQL开发实战技巧】系列(十二):三问(如何对字符串字母去重后按字母顺序排列字符串?如何识别哪些字符串中包含数字?如何将分隔数据转换为多值IN列表?)
【SQL开发实战技巧】系列(十三):讨论一下常用聚集函数&通过执行计划看sum()over()对员工工资进行累加
【SQL开发实战技巧】系列(十四):计算消费后的余额&计算银行流水累计和&计算各部门工资排名前三位的员工
【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report
【SQL开发实战技巧】系列(十六):时间类型操作(上):日、月、年、时、分、秒之差及时间间隔计算
【SQL开发实战技巧】系列(十七):时间类型操作(下):确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数


文章目录

  • 系列文章目录
  • 前言
    • 一、加减日、月、年
    • 二、加减时、分、秒
    • 三、日期间隔之时、分、秒
    • 四、日期间隔之日、月、年
  • 总结


前言

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


一、加减日、月、年

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

SQL> SELECT hiredate AS 聘用日期,2         hiredate - 5 AS5,3         hiredate + 5 AS5,4         add_months(hiredate, -5) AS5个月,5         add_months(hiredate, 5) AS5个月,6         add_months(hiredate, -5 * 12) AS5,7         add_months(hiredate, 5 * 12) AS58    FROM emp9   WHERE ROWNUM <= 1;聘用日期    减5天       加5天       减5个月     加5个月     AS5AS5----------- ----------- ----------- ----------- ----------- ----------- -----------
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 AS5,3         hiredate + 5 / 24 / 60 / 60 AS5,4         hiredate - 5 / 24 / 60 AS5分钟,5         hiredate + 5 / 24 / 60 AS5分钟,6         hiredate - 5 / 24 AS5小时,7         hiredate + 5 / 24 AS5小时8    FROM emp9   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-17SQL> 

三、日期间隔之时、分、秒

两个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 emp7  WHERE ename IN ('WARD','ALLEN'))X;间隔天数       间隔小时        间隔分        间隔秒
---------- ---------- ---------- ----------2         48       2880     172800SQL> 

四、日期间隔之日、月、年

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

总结

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

http://www.lryc.cn/news/7417.html

相关文章:

  • JavaScript知识点总结
  • adb命令记录
  • 9.Docker Swarm
  • 基于tensorflow keras DNN神经网络训练预测豆瓣中文影评差评好评 附完整代码 +数据
  • 商城系统必备营销工具(五)——积分商城
  • SpringBoot08:Shiro
  • 进击中的 Zebec 生态,Web2 与 Web3 世界的连接器
  • SpringCloud保姆级搭建教程五---Redis
  • 存储类别、链接与内存管理(一)
  • JS设计模式
  • 四、常用样式讲解二
  • KDHX-8700无线高压核相相序表
  • 【C++提高笔记】泛型编程与STL技术
  • 实用机器学习-学习笔记
  • 2023-02-15 学习记录--React-邂逅Redux(二)
  • Framework——【MessageQueue】消息队列
  • SpringBoot依赖原理分析及配置文件
  • 智慧机场,或将成为航空领域数字孪生技术得完美应用
  • SQL64 对顾客ID和日期排序
  • MybatisPlus使用聚合函数
  • 工程管理系统源码企业工程管理系统简介
  • 《计算机视觉和图像处理简介 - 中英双语版》:使用 OpenCV对图像进行空间滤波
  • FreeRTOS软件定时器 | FreeRTOS十三
  • 电脑文件被误删?360文件恢复工具,免费的文件恢复软件
  • pg_cron优化案例--terminate pg_cron launcher可自动拉起
  • Python 之 NumPy 随机函数和常用函数
  • 【目标检测】K-means和K-means++计算anchors结果比较(附完整代码,全网最详细的手把手教程)
  • Java高手速成 | 图说重定向与转发
  • Git:不小心在主分支master上进行修改,怎么才能将修改的数据保存到正确的分支中
  • 都2023年了,如果不会Stream流、函数式编程?你确定能看懂公司代码?