首先,如果你的时间类型都是date那么直接相减,不用转换,如果转换的话精确不到时分秒:
(*24:精确到时 *60:精确到分 *60 :精确到秒
select (end-start)*24*60*60 from dual;
如果不是日期类型,需要先将这两个时间转化为date型,然后在查询即可select (to_date(end,'yyyy-mm-dd hh24:mi:ss')-to_date(start,'yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dual;
oracle如何查询出最近15天的数据,如果没有数据则为0???
sql>
select to_char( (endtime - starttime)*24*60*60 ) as num, starttime(表中的开始时间,以确保查询出来的时间差和开始时间对应) as dates from learnprocess(表名) union all select to_char('0') as num , (sysdate -level +1) as dates from dual
connect by level<=15 order by dates
运行结果如下:
由于系统问题,照片传不上去,大概看一下手写视图
num | dates
0 | 2017/3/31
0 | 2017/4/1
6782 | 2017/4/2
... | ....
....... | .....
0 | 2017/4/14
(15天的日期对应的每一天的值,注意:这里的每条数据都是唯一的,也就是说一天只有一个开始时间和结束时间,如果一天中有多条开始时间和结束时间需要重新考虑)
转载请注明原文地址: https://ju.6miu.com/read-669161.html