【发布时间】:2020-02-11 13:26:27
【问题描述】:
我有一个用户的签到日期列表。 如何计算连续签入和签出之间的持续时间。 如果未找到结帐,则将持续时间保留为 0
+----+-----------+---------------------+
| ID | isCheckIn | DateChecked |
+----+-----------+---------------------+
| 1 | 1 | 2019-10-08 10:22:15 |
| 2 | 0 | 2019-10-08 10:24:30 |
| 3 | 1 | 2019-10-08 10:27:01 |
| 4 | 1 | 2019-10-08 10:31:44 |
| 5 | 0 | 2019-10-08 10:50:56 |
| 6 | 1 | 2019-10-09 09:24:09 |
| 7 | 0 | 2019-10-09 09:35:59 |
| 8 | 1 | 2019-10-09 10:04:26 |
+----+-----------+---------------------+
我期待这样的事情(持续时间以分钟为单位)......
+---------------------+---------------------+----------+
| CheckIn | CheckOut | Duration |
+---------------------+---------------------+----------+
| 2019-10-08 10:22:15 | 2019-10-08 10:24:30 | 2 |
| 2019-10-08 10:27:01 | | 0 |
| 2019-10-08 10:31:44 | 2019-10-08 10:50:56 | 19 |
| 2019-10-09 09:24:09 | 2019-10-09 09:35:59 | 11 |
| 2019-10-09 10:04:26 | | 0 |
+---------------------+---------------------+----------+
我解决了获取列表、遍历它、创建几个日期并计算时差的问题,但我更喜欢在服务器端做更多的事情。 请问有什么建议吗?非常感谢!!!!
【问题讨论】:
-
你运行的是哪个版本的mysql?
标签: mysql database date window-functions gaps-and-islands