Oracle数据库中对时间进行减、加操作,计算累计时间
数据表GYH,字段YHM用户名,RQ登录日期(DATE型),LOGIN登录时间(VARCHAR型),OUT退出时间(VARCHAR型)。问题:用select语句选择出用户...
数据表 GYH,字段 YHM 用户名,RQ登录日期(DATE型),LOGIN登录时间(VARCHAR型),OUT退出时间(VARCHAR型)。
问题:用select 语句 选择出 用户名(as 用户名) 和 对应的在线总时间
(在线总时间 ==SUM(OUT - LOGIN),其中 登录时间(LOGIN) 和 退出时间(OUT)是字符型数据,不能直接用时间减函数DATEDIFF。)
希望热心的百度知友能帮忙给出完整 select 语句,谢谢!
不考虑 在线时间段 跨越0点 展开
问题:用select 语句 选择出 用户名(as 用户名) 和 对应的在线总时间
(在线总时间 ==SUM(OUT - LOGIN),其中 登录时间(LOGIN) 和 退出时间(OUT)是字符型数据,不能直接用时间减函数DATEDIFF。)
希望热心的百度知友能帮忙给出完整 select 语句,谢谢!
不考虑 在线时间段 跨越0点 展开
2个回答
展开全部
select yhm,sum(to_date(out,'yyyy-MM-dd HH24:mi:ss') -to_date(login,'yyyy-MM-dd HH24:mi:ss')) from gyh
group by yhm;
---计算出在线天数。如果login和out仅仅记录时间,不含日期,则自己做个转化即可。
---关于要显示为:日/时/分,为了简单,将sum(....)设定为A,则表达式如下
select yhm,round(A)||'日'||(round(A*24)-round(A)*24)||'时'||round(A*24*60-round(A*24*60)-round(A*24)*60)||'分' from gyh group by yhm;
group by yhm;
---计算出在线天数。如果login和out仅仅记录时间,不含日期,则自己做个转化即可。
---关于要显示为:日/时/分,为了简单,将sum(....)设定为A,则表达式如下
select yhm,round(A)||'日'||(round(A*24)-round(A)*24)||'时'||round(A*24*60-round(A*24*60)-round(A*24)*60)||'分' from gyh group by yhm;
追问
round(A)||'日'||(round(A*24-round(A)*24))||'时'||round(A*24*60-round(A)*24*60-round(A*24-round(A)*24)*60)||'分'
这样出结果了,问题解决,谢谢
追答
别客气,昨天没有测试环境,因此担心有问题。问题解决了就好。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询