【发布时间】:2015-03-23 13:12:46
【问题描述】:
我有一个结构如下的表格:
id_task INTEGER,
task_begin DATETIME,
task_end DATETIME
我有这样的行:
id_task task_begin task_end
1 2015-03-23 09:00:00 2015-03-23 09:14:00
2 2015-03-23 09:10:00 2015-03-23 09:16:00
3 2015-03-23 09:18:00 2015-03-23 09:24:00
4 2015-03-23 09:21:00 2015-03-23 09:23:00
5 2015-03-23 09:24:00 2015-03-23 09:26:00
6 2015-03-23 09:26:00 2015-03-23 09:45:00
7 2015-03-23 09:30:00 2015-03-23 09:36:00
8 2015-03-23 09:34:00 2015-03-23 09:39:00
9 2015-03-23 09:05:00 null
10 null null
11 2015-03-23 10:02:00 2015-03-23 10:14:00
12 2015-03-23 10:04:00 2015-03-23 10:10:00
13 2015-03-23 10:03:00 2015-03-23 10:13:00
14 2015-03-23 10:10:00 null
15 2015-03-23 10:20:00 2015-03-23 10:30:00
16 2015-03-23 10:40:00 2015-03-23 10:50:00
我想选择没有重叠的实际工作时间。结果会是这样的:
task_begin task_end
2015-03-23 09:00:00 2015-03-23 09:16:00
2015-03-23 09:18:00 2015-03-23 09:45:00
2015-03-23 10:02:00 2015-03-23 10:14:00
2015-03-23 10:20:00 2015-03-23 10:30:00
2015-03-23 10:40:00 2015-03-23 10:50:00
如何使用 SELECT 或 MySQL 中的过程来执行此操作?
【问题讨论】:
-
过程语言比 SQL 更容易。
-
@RickJames 也许你是对的,我换个问题,我愿意接受任何解决方案。
-
在试图让您远离 SQL 时,我已经包含了存储过程。也许@fancyPants 有一个很好的解决方案。
-
@RickJames 我想在 MySQL 中解决,因为它的计算速度比任何服务器端代码都快,这个例子将根据我的实际问题进行扩展。这个问题将在视图中使用。
标签: mysql datetime select view procedure