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
)