【发布时间】:2020-09-30 18:42:15
【问题描述】:
我有这样的桌子
+--------+------------------+------------------+
| Job | jobRegisterTime | Job done time |
+--------+------------------+------------------+
| job 1 | 2020-09-01 19:28 | 2020-09-02 10:28 |
| job 2 | 2020-09-02 09:28 | 2020-09-02 19:28 |
| job 3 | 2020-09-02 09:28 | 2020-09-02 10:28 |
| job 4 | 2020-09-04 09:28 | 2020-09-05 10:28 |
| job 5 | 2020-09-05 09:28 | 2020-09-05 10:28 |
| job 6 | 2020-09-12 09:28 | 2020-09-12 16:28 |
| job 7 | 2020-09-13 09:28 | 2020-09-13 10:28 |
| job 8 | 2020-09-14 09:28 | 2020-09-14 19:28 |
| job 9 | 2020-09-15 09:28 | 2020-09-16 10:28 |
| job 10 | 2020-09-16 19:28 | 2020-09-17 10:28 |
| job 11 | 2020-09-17 15:28 | 2020-09-18 05:28 |
| job 12 | 2020-09-12 09:28 | 2020-09-12 09:58 |
+--------+------------------+------------------+
而且我不知道如何编写好的查询。条件第一部分计算整个月注册时间之间日期范围内的所有作业,例如 2020-09-01 和 2020-09-30 这个简单的我将在哪里和之间使用。第二部分是筛选工作时间从 8 小时到 17 小时之间在 2 小时内完成的工作。问题是我需要包括像这个例子这样的工作,如果工作在 16 小时注册并在第二天完成,直到 9 小时才算数,因为下班后的工作时间为零,直到下一个工作日。
再举几个例子:
Register time | Done time
2020-09-16 19:28 | 2020-09-17 9:28 = counts (Because it registered after work and done next day in work hours done 9:28 - 8:00 = 1:28
2020-09-16 11:28 | 2020-09-16 19:28 = doesn't count( range more than two hours)
2020-09-15 15:30 | 2020-09-16 08:30 Counts (because exclude not work hours. Difference 17:00 - 15:30 = 1:30 and 8:30 - 8:00 = 0:30 1:30 +0:30 = 2:00h
有人可以帮忙写出正确的条件吗?
【问题讨论】:
标签: mysql sql where-clause