将时间间隔分成1小时间隔mysql

时间:2019-05-21 09:55:16

标签: mysql sql datetime

我有一个时间戳级别的签入和签出数据

ID    checkin_datetime    checkout_datetime
4     04-01-2019 13:07    04-01-2019 13:09
4     04-01-2019 13:09    04-01-2019 13:12
4     04-01-2019 14:06    04-01-2019 14:07
4     04-01-2019 14:55    04-01-2019 15:06
22    04-01-2019 20:23    04-01-2019 21:32
22    04-01-2019 21:38    04-01-2019 21:42
25    04-01-2019 23:22    04-02-2019 00:23
29    04-02-2019 01:00    04-02-2019 06:15

这是我正在寻找的输出,每个间隔都分为几个小时间隔,以此类推,例如:

ID       day         HR    Minutes
4     04-01-2019     13    2
4     04-01-2019     13    4
4     04-01-2019     14    1
4     04-01-2019     14    5
4     04-01-2019     14    2
22    04-01-2019     20    27
22    04-01-2019     21    33
25    04-01-2019     23    28
25    04-02-2019     0     23
29    04-02-2019     1     60
29    04-02-2019     2     60
29    04-02-2019     3     60
29    04-02-2019     4     60
29    04-02-2019     5     60
29    04-02-2019     6     15

1 个答案:

答案 0 :(得分:0)

您可以尝试TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)并在原始表中添加新列,以分钟为单位显示每个会话的总时长。

我认为您可能会在每天的00:00拆分数据,从而弄乱了数据。 您这样做的基本意思是,会话ID为25的用户有两个会话,而实际上他/她有一个会话,该会话在一天之内开始而在另一天结束。

如果这是必需的,那么也许原始表需要重新设计。