页面

2015年7月23日星期四

一条sql实现两个时间相减后显示天数-小时-分钟-秒


朋友遇到这样的问题,让我帮忙写的一个sql,其实很简单,贴出了供大家参考:
with minus_sec as (select
ceil((to_date('2011/02/24 10:00:00','yyyy/mm/dd hh24:mi:ss')-
to_date('2011/1/29 22:30:00','yyyy/mm/dd hh24:mi:ss'))*24*60*60) sec
from dual)    ---把两个日期相减转换成秒数,由于两个日期相减默认是天数,小于一天的用小数表示,所以为了准确转换用ceil函数取比其大的最小整数。
select
  trunc(sec/(60*60*24)) days,   ---除以1天的秒数取整就得到天数
  trunc(mod(sec,60*60*24)/(60*60)) hours,  --针对一天的秒数取模 得到的秒数就是不足一天的秒数,然后除以3600取整得到小时
  trunc(mod(sec,60*60)/60) mis,  ---针对一小时秒数取模,得到的就是不足一小时的秒数,然后除以60取整得到分钟
  mod(sec,60) sec           --针对一分钟的秒数取模,得到的是不足一分钟的秒数,得到秒
from minus_sec;

没有评论:

发表评论