SQL得到两个时间的时间差(Oracle/MySQL)

2021-05-19 196点热度 0人点赞 0条评论

如题,SQL下,想要知道两个时间相隔多少(持续时间)

Oracle的做法

假设表table1的两个字段date1和date2都是datetime类型,使用TO_NUMBER(date1-date2)可以得到时间的天数(小数),想要得到其他的时间单位,只要在天数上做换算就可以了,如下:

-- 得到当前日期的毫秒数(和1970年相比)
--使用round后得到整数
SELECT ROUND(TO_NUMBER(SYSDATE-to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) * 24 * 60 * 60 * 1000) from dual

--得到date1和date2相差的天
select TO_NUMBER(t1.date1 - t1.date2) as r1 from table1 t1

--得到date1和date2相差的小时数
select ROUND(TO_NUMBER(t1.date1 - t1.date2) * 24) as r1 from table1 t1

MySQL的做法

使用TIMESTAMPDIFF函数
需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR几种类型,第二个和第三个参数是待比较的两个时间,比较是后一个时间减前一个时间,具体用法如下:

--返回结果是104,这里比较的是两个时间的天数差;
SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13');

--这里比较的是两个时间的月份,返回的结果是3;
SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13');

 

admin

这个人很懒,什么都没留下

文章评论

*

code