关于oracle中日期计算的问题!请教各位!
关于oracle中日期计算的问题!请教各位!
现在有两个字段,分别记录一个inTime和一个outTime,他们都是varchar2类型,用"20050202123201"的格式来显示一个时间,现在我想统计这个表中所有记录的inTime和outTime的时间差值的合计数sum,请问,SQL应该如何写?多谢了!
问题点数:0、回复次数:6Top
1 楼xpony(xiezequn)回复于 2005-02-03 13:15:46 得分 0
select
Sum(To_Number(inTime) - To_Number(outTime)
from ...
where ...Top
2 楼yxxx(_小孬)回复于 2005-02-03 13:20:46 得分 0
楼上这样减,问题很大吧?Top
3 楼xpony(xiezequn)回复于 2005-02-03 13:21:23 得分 0
select --得到的结果是 天
Sum(to_Date(inTime,'yyyymmddhh24miss')-
to_Date(outTime,'yyyymmddhh24miss') )
from tableA
-----------------------------------------------
select --得到的结果是 秒
Sum(to_Date(inTime,'yyyymmddhh24miss')-
to_Date(outTime,'yyyymmddhh24miss') )* 24 * 3600
from tableA
Top
4 楼Croatia(Croatia)回复于 2005-02-03 14:02:04 得分 0
To_Number是不对的。
to_Date才是对的。
时间不是10进制的。
Top
5 楼msn365(顺子)回复于 2005-02-03 15:41:38 得分 0
我想得到的结果精确的秒,然后转换成XX天XX小时XX分钟XX秒的格式,请问如何做呢?Top
6 楼xpony(xiezequn)回复于 2005-02-03 17:39:25 得分 0
Select
trunc(Sum(To_Date(outTime,'yyyymmddhh24miss') - To_Date(inTime,'yyyymmddhh24miss'))) || '天' ||
trunc(mod(Sum(To_Date(outTime,'yyyymmddhh24miss') - To_Date(inTime,'yyyymmddhh24miss')),1)*24) || '小时' ||
trunc(mod(mod(Sum(To_Date(outTime,'yyyymmddhh24miss') - To_Date(inTime,'yyyymmddhh24miss')),1)*24,1)*60) || '分' ||
trunc(mod(mod(mod(Sum(To_Date(outTime,'yyyymmddhh24miss') - To_Date(inTime,'yyyymmddhh24miss')),1)*24,1)*60,1)*60) || '秒'
from tableATop




