我在 MySQL 中有一个表,如下所示:
+----+--------+------------------+------+
| id | userid | fecha_ingreso | tipo |
+----+--------+------------------+------+
| 1 | 1 | 2015-06-08 20:00 | 1 |
| 3 | 1 | 2015-06-09 05:00 | 2 |
| 18 | 2 | 2015-06-09 23:30 | 1 |
| 19 | 2 | 2015-06-10 05:00 | 2 |
| 20 | 2 | 2015-06-10 06:00 | 1 |
| 21 | 2 | 2015-06-10 09:00 | 2 |
| 22 | 1 | 2015-06-09 23:30 | 1 |
| 23 | 1 | 2015-06-10 05:00 | 2 |
| 24 | 1 | 2015-06-10 06:00 | 1 |
| 25 | 1 | 2015-06-10 09:00 | 2 |
+----+--------+------------------+------+
10 rows in set
这个表有每个用户的信息(userid
)谁进入工作和离开工作(fecha_ingreso
)。例如,userid=1
在 输入 ( tipo=1
)'2015-06-08 20:00'
并在 离开工作'2015-06-09 05:00'
。
然后我userid=2
有谁tipo=1
在'2015-06-09 23:30'
(夜间)进入()工作,他离开(tipo=2
)工作吃早餐,'2015-06-10 05:00'
他再次进入,'2015-06-10 06:00'
最后他离开了工作'2015-06-10 09:00'
。
我无法进行仅向我显示如下内容的查询:
+--------+------+---------------------+---------------------+-----------------+
| userid | INS | OUTS | time_after_22pm_and_lessOrEqual6am |
+--------+------+---------------------+---------------------+-----------------+
| 1 | 2015-06-25 15:00:00 | 2015-06-26 23:15:00| 01:15:00
| 2 | 2015-06-25 23:00:00 | 2015-06-26 13:30:00| 07:00:00
+--------+------+---------------------+---------------------+-----------------+
2 rows in set
这是我需要的输出。即使用户可以有几个进出,我也需要显示他的第一次进入日期时间和最后一次退出日期时间,并在附加列中说明他在第二天 22:00 和早上 6 点的范围内工作了多少小时、分钟和秒.
蒂姆,你的查询很完美,但几乎接近了。但是,当用户在下午 22 点之后(如我的示例所示)时,我不知道如何获取小时:分钟:秒。