原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)


最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。

如何解决用户在线登陆时间——的小时和分钟计算问题。

http://bbs.csdn.net/topics/390613823

我想得到用户在线时长,格式是:08:00和08:43这种格式的在线时长结果。

我自己尝试查了sql的文档,也百度了很多。但是没有这方面的应用。

我自己也尝试写了很多但是不行。

我只能得到在线的总分钟数,或者总秒数。无法弄成想要的格式。

这是我的代码:

select ta.[user],(DATEDIFF(mi,ta.time,tb.time)) from 

(select * from T1 where T1.operate='Login') as ta

inner join 

(select * from T1 where T1.operate='Logout') as tb

on ta.[user]=tb.[user]

------------------------------------

或者这样写:

select ta.[user], cast(datediff(hour, ta.time, tb.time) as varchar) + ':' + cast(DATEDIFF(MINUTE, ta.time, tb.time) as varchar)

from

(select [user], [time] from T1 where [operate] = 'login') as ta

inner join

(select [user], [time] from T1 where [operate] = 'logout') as tb

on ta.[user] = tb.[user];

两种写法都无法实现想要的结果。请求大神指导下,帮忙给出一种解决方法。

我测试完,发效果图。

我的解法:

方法1:


  1. drop table t1
  2. create table T1
  3. (
  4. [user] varchar(30),
  5. operate varchar(10),
  6. time datetime
  7. )
  8. insert into T1
  9. select 'LiMing','Login','2010/10/24 8:03' union all
  10. select 'WangYi','Login','2010/10/24 8:14' union all
  11. select 'WangYi','Logout','2010/10/24 16:14' union all
  12. select 'LiMing','Logout','2010/10/24 16:14'
  13. select [user],
  14. cast(cast(round(interval * 1.0 / 60,0,1) as int) as varchar) + ':' +
  15. case when interval * 1.0 % 60 <> 0
  16. then cast(cast(round(interval * 1.0 % 60,0,1) as int) as varchar)
  17. else '00'
  18. end
  19. from
  20. (
  21. select T1.[user],
  22. DATEDIFF(MINUTE,t1.time,t2.time) as interval
  23. from T1
  24. inner join T1 t2
  25. on t1.[user] = t2.[user]
  26. and t1.operate = 'login'
  27. and t2.operate = 'logout'
  28. )a
  29. /*
  30. user (无列名)
  31. LiMing 8:11
  32. WangYi 8:00
  33. */

方法2:


  1. --方法2.
  2. select [user],
  3. convert(varchar(5),DATEADD(MINUTE,interval,time),114)
  4. from
  5. (
  6. select T1.[user],
  7. convert(varchar(10),t1.time,120) as time,
  8. DATEDIFF(MINUTE,t1.time,t2.time) as interval
  9. from T1
  10. inner join T1 t2
  11. on t1.[user] = t2.[user]
  12. and t1.operate = 'login'
  13. and t2.operate = 'logout'
  14. )a
  15. /*
  16. user (无列名)
  17. LiMing 08:11
  18. WangYi 08:00
  19. */
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。

发布了416 篇原创文章 · 获赞 135 · 访问量 95万+

在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)的更多相关文章

  1. 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)

    原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  2. 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)

    原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...

  3. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  4. 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)

    原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  5. 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)

    原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  6. 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)

    原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...

  7. 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)

    原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...

  8. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  9. 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)

    原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

随机推荐

  1. win10: ctrl+shift不能切换输入法的问题

    习惯了使用Ctrl+Shift切换输入法,乍然切换到Win10,很不适应,可用以下方法修改之. 1. 点击开始菜单,点击“设置”按钮   2. 选择“时间与语言” 3. 选择“区域和语言”按钮,查看右 ...

  2. Docs-.NET-C#-指南-语言参考-关键字-值类型:char

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.C ...

  3. 【转载】 卷积神经网络(Convolutional Neural Network,CNN)

    作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...

  4. 泡泡一分钟:Aided Inertial Navigation: Unified Feature Representations and Observability Analysis

    http://udel.edu/~yuyang/downloads/tr_observabilityII.pdf Aided Inertial Navigation: Unified Feature R ...

  5. 转 mysql awr 报告

    1. https://github.com/noodba/myawr 2. https://www.cnblogs.com/zhjh256/p/5779533.html

  6. sqoop import mysql to hive table:GC overhead limit exceeded

    1. Scenario description when I use sqoop to import mysql table into hive, I got the following error: ...

  7. (一)IDEA修改HTML不生效(未热部署)

    一.问题 IDEA 版本:2018.1.2 项目类型:SpringBoot 描述 : 修改JSP文件内容时,不会热部署,需要每次都重启项目才生效. 二.解决方案 加入Springboot开发者工具,即 ...

  8. JS根据offsetHeight修改元素的高度

    之前的博文: 测试了offsetHeight获取的是页面元素的高度,包裹该元素本身内容的高度,上下padding,上下border.这个获取的但是px,px是相对单位,受电脑分辨率的影响,用LODOP ...

  9. 【Leetcode_easy】949. Largest Time for Given Digits

    problem 949. Largest Time for Given Digits solution: class Solution { public: string largestTimeFrom ...

  10. 【CSS3练习】3D盒子制作

    先发个3D盒子最终效果图 在线效果预览:http://dtdxrk.github.io/game/css3-demo/box-3d.html 制作步骤1:创建基本结构 分布把6个面定义到3×3的画布上 ...