1、months_between(date1,date2)  返回两个日期之间的月份的差值

(1)、如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数。否则,返回数值带小数

select months_between(sysdate,addtime)as diff_month from test6

2、interval   时间间隔函数

Oracle语法:

INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]

该数据类型常用来表示一段时间差, 注意时间差只精确到年和月. precision为年或月的精确域, 有效范围是0到9, 默认值为2.

i、

select INTERVAL '123-2' YEAR(3) TO MONTH from dual

表示: 123年2个月, "YEAR(3)" 表示年的精度为3, 可见"123"刚好为3为有效数值, 如果该处YEAR(n), n<3就会出错, 注意默认是2.

ii、

select INTERVAL '4' YEAR from dual

表示: 4年, 同 INTERVAL '4-0' YEAR TO MONTH 是一样的-----表示4年

iii、

select INTERVAL '50' MONTH from dual;

表示: 50个月, 同 INTERVAL '4-2' YEAR TO MONTH 是一样  ----- 表示4年2个月

vi、

select (interval '3-6' year)+(interval '6' month) from dual

表示:3年6个月加上6个月=4年

3、利用Interval可以实现时间的差值运算,而不用借助于工具函数如month,前提是进行运算的字段必须是date类型

当前时间减去7分钟的时间

select sysdate,sysdate - interval '7' MINUTE from dual

当前时间减去7小时的时间

select sysdate - interval '7' hour from dual

当前时间减去7天的时间

select sysdate - interval ’7’ day from dual

当前时间减去7月的时间

select sysdate,sysdate - interval '7' month from dual

当前时间减去7年的时间

select sysdate,sysdate - interval '7' year from dual

时间间隔乘以一个数字

select sysdate,sysdate - 8*interval '7' hour from dual

select addtime,(addtime - interval '7' YEAR) from test6

含义解释:

Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select语句块中。

比如,我要获得系统时间,则用“select sysdate from dual” 则返回系统当前的时间:2008-11-07 9:32:49,不同系统可能返回日期的格式不一样。"select user from dual"则返回当前连接的用户。如果是"select 1+2 from dual",则返回结果:3

4、利用两个日期相减,并通过TO_NUMBER和ROUND函数计算得到时间差  不精确的计算方法

i、天:

SELECT ROUND(TO_NUMBER(sysdate-addtime)) from test6

ii、小时

SELECT ROUND(TO_NUMBER(sysdate-addtime))*24 from test6

iii、分钟

SELECT ROUND(TO_NUMBER(sysdate-addtime))*24*60 from test6

秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

当然这样算出来的结果不是很准确,只是粗略的计算,因为当中使用到了ROUND进行了四舍五入!!!

5、利用TO_CHAR和Interval得到的系统事件减去一段时间间隔,并返回精确时间

select sysdate,TO_CHAR(sysdate - interval '4-2' YEAR TO MONTH - interval '1' day,'yyyy/mm/dd hh24:mi:ss') from dual

6、真正精确的计算两个date类型的日期的间隔,利用trunc函数,注意是:date类型,当然如果你的日期类型定义成timespan当然就不用这么麻烦了!!!

i、计算两个日期的秒间隔

select86400*(sysdate-addtime)-60*(trunc((86400*(sysdate-addtime))/60)) from test6

ii、计算两个日期的分钟间隔   注意:这里的分钟间隔要考虑到秒的问题,这里舍弃秒,因为上面已经计算出秒的差值了

SELECT sysdate,addtime fromtest6;select trunc(1440*(sysdate-addtime)-60*trunc(1440*(sysdate-addtime)/60)) from test6

iii、计算两个日期的小时间隔,同样这里要舍弃秒和分钟,不采取四舍五入,因为上面已经计算出差值了

select sysdate,addtime fromtest6;select trunc((sysdate-addtime)*24-24*trunc((sysdate-addtime)*24/24)) from test6;

vi、计算两个日期的周的间隔

SELECT sysdate,addtime fromtest6;select trunc((sysdate-addtime)/7) from test6

vii、计算两个日期的天的差距

SELECT sysdate,addtime fromtest6;select trunc(sysdate-addtime) from test6

由于每个月的天数无法给出一个确切值,所以无法通过上面的算法给出月份的差距,但是可以通过months_between函数获得

SELECT sysdate,addtime fromtest6;select trunc(months_between(sysdate,addtime)) from test6;

monthdiff oracle_Oracle计算时间差函数相关推荐

  1. mysql计算时间差函数 和 四舍五入 2021-10-20

    mysql计算时间差函数 和 四舍五入 mysql计算时间差函数 四舍五入 mysql计算时间差函数 提示:以下是本篇文章正文内容,下面案例可供参考 mysql数据中计算时间差函数 MySql计算两个 ...

  2. mysql数据中计算时间差函数

    mysql数据中计算时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime ...

  3. MySQL计算时间差函数

    一.时间差函数:timestampdiff 语法:timestampdiff(interval, datetime1,datetime2) 结果:返回(时间2-时间1)的时间差,结果单位由interv ...

  4. Oracle计算时间差函数

    为什么80%的码农都做不了架构师?>>>    两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: ROU ...

  5. oracle 求时间差年,Oracle计算时间差常用函数

    两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: sql;"> ROUND(TO_NUMBER(END_D ...

  6. Oracle计算时间差表达式

    --获取两时间的相差豪秒数  select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008 ...

  7. mysql相隔多长时间_Mysql 计算时间间隔函数

    mysql计算时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法 ...

  8. R语言difftime函数计算时间差值实战

    R语言difftime函数计算时间差值实战 目录 R语言difftime函数计算时间差值实战 #基础语法 #获取difftime语法帮助

  9. 使用MySql计算两个日期的时间差函数:TIMESTAMPDIFF

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法 TIMESTAMPDIFF计算两个日期差值,可定义时间单位 DATEDIFF 计算两个日期差,以天为单位 TIMDIFF 时间比较,直 ...

最新文章

  1. 一次DPM备份Exchange DAG的故障处理过程
  2. arcgis 10.0中的server报错说工作站服务没有打开
  3. Spring中 @Autowired注解与@Resource注解的区别
  4. c语言用正数的形式求最大值最小值,C语言-进制 - 盘盘的灰灰的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. mysql 聚合函数内比较运算符_关于常用 MYSQL 聚合函数,其他函数 ,类型转换,运算符 总结...
  6. 计算机d,计算机词汇d
  7. Spring Data JPA 从入门到精通~javax.persistence概况介绍
  8. java多线程交替打印_java实现多线程交替打印
  9. 2017.5.9 货车运输 思考记录
  10. 牧马人鼠标g13鼠标宏_达尔优第五代牧马人EM915游戏鼠标评测
  11. 【转】C# Socket编程笔记
  12. error: storage class specified for parameter问题-转
  13. 实用!Mybatis中trim标签的使用教程
  14. 代码一致性 java_java实现一致性hash算法实例代码
  15. 广西小学计算机教案上册,广西三年级信息技术教案
  16. 离散数学及其应用第八版纠正(p29):关于n皇后问题的SAT表示
  17. 虚拟机中安装Synology
  18. 对于面试官的问答: 你在项目组里拿到一个项目是怎么开展的呢???
  19. win10如何找计算机管理员密码,win10怎么修改administrator账户密码 win10修改管理员账户密码方法...
  20. 换一种姿势挖掘任意用户密码重置漏洞

热门文章

  1. 如何在C#中使用Win32和其他库之三
  2. 命令查看linux主机配置
  3. mac里打开隐藏的 library文件夹
  4. Spring 的持久化实例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...
  5. 用 vue2 和 webpack 快速建构 NW.js 项目(1)
  6. linux function
  7. LINQ系列:LINQ to XML操作
  8. ms sql 触发器( 转)
  9. win与linux渊源,微软与Linux从对立走向合作,WSL是如何诞生的
  10. 正则表达式matlab,正则表达式中一个word的匹配 @MATLAB - 优秀的Free OS(Linux)版 - 北大未名BBS...