我有一张桌子如下:
mysql> DESCRIBE student_lectures;
+------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| course_module_id | int(11) | YES | MUL | NULL | |
| day | int(11) | YES | | NULL | |
| start | datetime | YES | | NULL | |
| end | datetime | YES | | NULL | |
| cancelled_at | datetime | YES | | NULL | |
| lecture_type_id | int(11) | YES | | NULL | |
| lecture_id | int(11) | YES | | NULL | |
| student_id | int(11) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------------+----------+------+-----+---------+----------------+
我基本上想找到一个讲座没有发生的时间 – 所以为了做到这一点,我正在考虑将重叠讲座分组在一起(例如,上午9点到10点和上午10点到11点,讲座将显示为单上9点至11点的演讲).背靠背可能会有两个以上的讲座.
我现在有这个:
SELECT l.start, l2.end
FROM student_lectures l
LEFT JOIN student_lectures l2 ON ( l2.start = l.end )
WHERE l.student_id = 1 AND l.start >= '2010-04-26 09:00:00' AND l.end <= '2010-04-30 19:00:00' AND l2.end IS NOT NULL AND l2.end != l.start
GROUP BY l.start, l2.end
ORDER BY l.start, l2.start
哪个回报:
+---------------------+---------------------+
| start | end |
+---------------------+---------------------+
| 2010-04-26 09:00:00 | 2010-04-26 11:00:00 |
| 2010-04-26 10:00:00 | 2010-04-26 12:00:00 |
| 2010-04-26 10:00:00 | 2010-04-26 13:00:00 |
| 2010-04-26 13:15:00 | 2010-04-26 16:15:00 |
| 2010-04-26 14:15:00 | 2010-04-26 16:15:00 |
| 2010-04-26 15:15:00 | 2010-04-26 17:15:00 |
| 2010-04-26 16:15:00 | 2010-04-26 18:15:00 |
...etc...
我正在寻找的输出是:
+---------------------+---------------------+
| start | end |
+---------------------+---------------------+
| 2010-04-26 09:00:00 | 2010-04-26 13:00:00 |
| 2010-04-26 13:15:00 | 2010-04-26 18:15:00 |
任何帮助表示感谢,谢谢!
解决方法:
这样的事情应该有效.
SELECT l2.start,l.end
来自student_lectures l
LEFT JOIN student_lectures l2 ON l2.end
在l.start和l.end之间
在哪里.开始
BETWEEN’2010-04-26 00:00:00’和’2010-04-26 23:59:59′
GROUP BY l.start
订购l.start
标签:mysql,date,timespan 来源: https://codeday.me/bug/20190710/1422633.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。