首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个表中获取到日期之间的freetime

从另一个表中获取到日期之间的freetime
EN

Stack Overflow用户
提问于 2021-06-30 21:22:19
回答 2查看 55关注 0票数 0

使用这个MYSQL语法,我可以获得从明天到today+30天的所有日期,间隔1小时,从14点到18点。

代码语言:javascript
复制
SELECT 
DATE_ADD(DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY), INTERVAL day.seq DAY), INTERVAL hour.seq HOUR) as freetime
FROM 
seq_0_to_30 AS day, 
seq_14_to_18 AS hour
HAVING freetime NOT IN ( SELECT `start` FROM `events`);

having行应该在表events中搜索预订的事件。此表中有像start和end这样的列。例如:

代码语言:javascript
复制
start: 2021-07-20 16:00:00
end: 2021-07-20 17:00:00

此日期/时间不应显示为freetime。这与上面的语法一起工作。但。如果我有一个像这样的预订事件:

代码语言:javascript
复制
start: 2021-07-20 16:00:00
end: 2021-07-20 19:00:00

(超过1个小时),我的查询不能正常工作。我是这样获取freetime的:

代码语言:javascript
复制
2021-07-01 14:00:00
2021-07-01 15:00:00
2021-07-01 17:00:00
2021-07-01 18:00:00

这是正确的,因为我在having行中只检查了起始值。我必须如何修改查询,这两个值(开始和结束)将被检查。

正确的结果应该是:

代码语言:javascript
复制
2021-07-01 14:00:00
2021-07-01 15:00:00

因为从16号到18号是我的事件表中的一个事件。

EN

回答 2

Stack Overflow用户

发布于 2021-06-30 22:19:48

seq_0_to_30 AS day是一个可爱的特性,但它是针对MariaDB的,而不是针对MySQL的

票数 1
EN

Stack Overflow用户

发布于 2021-06-30 22:35:23

我不能评论,所以我会在你看到这篇文章后发表并删除。您可以在insert into后面加上',‘而不是';’,这就是显示结果2021-07-01 16:00:00的原因

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68195639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档