如何在MySQL数据库中查找给定范围内的缺失时间值?

时间:2017-03-10 13:07:07

标签: mysql

假设我有一张这样的表:

|    id |    mtime |
...
|   101 | 12:00:00 |
|   102 | 12:01:00 |
|   103 | 12:03:00 |
|   104 | 12:07:00 |
|   105 | 12:08:00 |
|   106 | 13:00:00 |
...

有没有办法查询表格(范围12:00:00-13:00:00)以获得一组缺失值,如下所示:

|    mtime |
| 12:02:00 |
| 12:04:00 |
| 12:05:00 |
| 12:06:00 |
| 12:09:00 |
| 12:10:00 |
...
| 12:59:00 |

或至少第一次空出现:

|    mtime |
| 12:02:00 |

或最后一个连续的值,打破了链条:

|    mtime |
| 12:01:00 |

我在考虑在查询中的某个地方使用ADDTIME(time, '00:01:00'),但我无法理解。现在我几乎不相信没有更复杂的编码和多个查询就可以实现,但我希望我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

生成一个表(TABLE2),它有一整天的时间(如果你真的需要在任何日期), 并写这样的查询

SELECT TABLE2.mtime FROM TABLE2 LEFT JOIN TABLE1 ON TABLE1.mtime = TABLE2.mtime WHERE TABLE1.mtime IS NULL

还添加最大和最小时间检查条件,因为TABLE2具有所有dat时间。