日期:2014-05-17  浏览次数:21108 次

Oracle数据库中对时间进行减、加操作,计算累计时间
本帖最后由 gongyaohua2 于 2013-09-23 21:43:46 编辑

数据表 GYH,字段 YHM 用户名,RQ登录日期(DATE型),LOGIN登录时间(VARCHAR型),OUT退出时间(VARCHAR型)。
问题:用select 语句 选择出  用户名(as 用户名)  和  对应的在线总时间
(在线总时间 ==SUM(OUT -  LOGIN),其中 登录时间(LOGIN) 和 退出时间(OUT)是字符型数据,不能直接用时间减函数DATEDIFF。)

希望热心的朋友能帮忙给出完整 select 语句,谢谢!
最后得到的 用户在线时长,格式表示为: 日/时/分

------解决方案--------------------
2个字段 都转换成时间不就可以咯 

纯手敲的 不知道会报错不 可能round(mi/86400,0)这3个位置 都要用to_char()转换下

select yhm "用户名", 
       round(mi/86400,0)
------解决方案--------------------
'/'
------解决方案--------------------
round(mod(mi,86400)/60,0)
------解决方案--------------------
'/'
------解决方案--------------------
mod(mi,1440) "在线时长"
from 
(
select yhm,
       SUM((to_date(OUT,'hh24:mi;ss') -  to_date(LOGIN,'hh24:mi;ss'))*24*60*60) mi
from gyh
group by yhm
)