【发布时间】:2021-08-25 19:49:20
【问题描述】:
| id | start_date | end_date |
|---|---|---|
| 7 | 2021-08-07 15:25:10.000000 | 2021-08-10 15:25:10.000000 |
| 8 | 2021-08-09 15:25:10.000000 | 2021-08-12 15:25:10.000000 |
| 9 | 2021-08-19 15:25:10.000000 | 2021-08-22 15:25:10.000000 |
| 10 | 2021-08-21 15:25:10.000000 | 2021-08-25 15:25:10.000000 |
我有这样的时间数据重叠。我要做的是取开始和结束而不计算中间的那些,然后计算它们之间的差距。所以我期望的结果是
| start_date | end_date |
|---|---|
| 2021-08-07 15:25:10.000000 | 2021-08-12 15:25:10.000000 |
| 2021-08-19 15:25:10.000000 | 2021-08-25 15:25:10.000000 |
我这样写了一个简单的查询,但是结果和差错了,我该怎么办? (我的表只包含 id、start_date 和 end_date)
SELECT *,TIME_TO_SEC(TIMEDIFF(end_date, start_date)) / 3600 AS Total
FROM (
SELECT DISTINCT *
,(SELECT MIN(start_date) FROM deneme
WHERE end_date BETWEEN t.start_date AND t.end_date) AS TIME_ENTER
,(SELECT MAX(end_date) FROM deneme
WHERE start_date BETWEEN t.start_date AND t.end_date) AS TIME_EXIT
FROM deneme t
) AS o
GROUP BY id;
【问题讨论】:
-
select version();显示什么? -
@ysth 10.4.20-MariaDB
-
您能否更准确地说明您的表格数据?向我们展示运行
SELECT * FROM deneme时结果表数据的样子。 -
@FaNo_FN 感谢您的建议,我编辑了它。
标签: mysql datetime overlap overlapping