我有一个应用程序记录登录和注销datetimestamps到mysql数据库。每个用户登录和注销都是一行。我需要创建一个报告,以小时和分钟显示每个用户登录的分钟数。我可以通过在两个时间戳之间使用TIMESTAMPDIFF,然后按小时在其中一个时间戳上进行分组来找出如何执行此操作。但我不知道如何在登录时间为11:53时登出,登出时间为13:06。在哪里应该显示11分钟7分钟,12分钟60分钟,13分钟6分钟。相反,我现在的做法是在第11小时显示73分钟(如果按登录时间分组)。Mysql - 获取每小时的分钟数,当开始和结束时间在不同的小时
回答
如果您创建的另一个表格只需要将所有小时数作为时间戳报告,那么最简单。之所以这样说,表是hourlist和其中的时间戳列是小时
那么你一定要这样的查询:
select hour, userid,
case
when login < hour and logout >= ADDTIME(hour,'1:00:00.0') then '1:00:00.0'
when login >= hour and logout < ADDTIME(hour, '1:00:00.0')then TIMEDIFF(logout, login)
when login >= hour and logout > ADDTIME(hour, '1:00:00.0') then TIMEDIFF(ADDTIME(hour, '1:00:00.0'), login)
when login < hour and logout < ADDTIME(hour, '1:00:00.0') then TIMEDIFF(logout, hour)
else '00:00:00.0'
end case
from hourlist join loginlogout
on (login >= hour and login < ADDTIME(hour,'1:00:00.0')) or (logout >= hour
and logout < ADDTIME(hour,ADDTIME(hour,'1:00:00.0'))
order by hour
太棒了!谢谢!这接近工作。但是,我需要得到总计的会议记录,而且似乎没有汇总。当我添加一个群组时,我只是获得第一个登录结果,而不是它在该小时内汇总该用户的所有登录分钟。任何想法对我来说? – RThomas1 2014-08-28 17:03:15
你的意思是什么?此查询应为您在该小时内为该用户提供小时,用户和分钟数(以timediff表示) - 您不需要按 – antlersoft 2014-08-28 18:08:16
排序的其他小组糟糕,我按照上述顺序进行了分组。谢谢! – RThomas1 2014-09-02 17:12:44
- 1. 获取30分钟开始和结束时间之间的时间间隔的数据在MySQL
- 2. 计算开始和结束时间的分钟数
- 3. 如何从日期时间字段获取开始小时数和结束小时数SQLServer
- 4. 获取的开始时间和结束时间
- 5. 获取视频的开始时间和结束时间
- 6. 给定开始时间,结束时间和秒数。在特定小时内获取秒数
- 7. 在PHP中获取小时和分钟
- 8. 开始时间和结束时间之间的倒数时间
- 9. 获取小时和分钟的日期时间
- 10. 使用chrono :: time_point获取当前的小时数和分钟数
- 11. 如何在MySQL中获取当前小时的开始Unix时间戳?
- 12. MySQL的 - 获取时间以分钟为时间值超过一个小时
- 13. Matplotlib:每15分钟开始一次,从小时开始
- 14. 开始和结束时间 - 每小时/天/周等多少个并发事件
- 15. 计算从开始和结束时间导出的每分钟会话
- 16. 使用分钟设置CronTrigger开始和结束时间
- 17. Cron模式与开始和结束时间分钟
- 18. 获取日期时间小时和分钟与领先零
- 19. 从MySQL时间戳获取时间并以小时,分钟等形式显示?
- 20. 小时和分钟
- 21. 如何在php中检查DB小时数和分钟数小于当前小时数和分钟数?
- 22. 如何获取kairosdb数据库的开始时间和结束时间?
- 23. 每个工作的提取开始和结束时间与delayed_job
- 24. 时间除以小时数/分钟
- 25. oracle-从开始时间开始的1小时数据聚合15分钟的时间
- 26. 是什么@(posedge时钟)之间的差异开始结束....和@(posedge时钟);?
- 27. Hangfire作业从小时开始,每隔5分钟运行几小时
- 28. 如何获得的开始时间和结束时间为每个状态
- 29. 在几分钟的时间范围内获取mySQL行多个小时
- 30. 如何在angularJs中获取fullCalendar中的开始时间和结束时间
这种类型的东西很难在SQL,它很可能是很容易做的客户端应用语言。 – Barmar 2014-08-27 16:56:00
如果登录和注销可以跨越午夜边界,则会变得更加复杂,因此登录名为'23:50',注销为'01:15'。 – Barmar 2014-08-27 16:57:33