如题,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');
文章评论