首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找日期之间的可用时隙

查找日期之间的可用时隙
EN

Stack Overflow用户
提问于 2013-09-30 15:28:03
回答 1查看 229关注 0票数 1

我正在为预订日历创建REST API,现在我正在尝试找出编写查询的最有效方法,该查询以15分钟的间隔返回两个日期之间的所有时间戳。如果我提供2013-09-212013-09-22,我希望获得:

代码语言:javascript
运行
复制
2013-09-21 00:15:00
2013-09-21 00:30:00
2013-09-21 00:45:00
2013-09-21 01:00:00
2013-09-21 01:15:00
2013-09-21 01:30:00
...
2013-09-22 23:15:00
2013-09-22 23:30:00
2013-09-22 23:45:00

然后,我会使用这个查询作为子查询,并在其上应用一些条件来删除工作时间以外的时隙(不是恒定的),预订的时隙等。

我看过很多博客文章,作者创建了一个“日历表”来存储所有这些时间戳,但对我来说这似乎是一种浪费,因为这些数据不需要存储。

对于如何做到这一点,或者获取/存储数据的更好方法,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-01 01:00:57

下面是一个过程,它生成95行,并在执行过程中递增一个日期变量,然后将带有日期的条目的表与生成日期行的“实体”表连接在一起。

代码语言:javascript
运行
复制
select str_to_date('2010-01-01', '%Y-%m-%d') into @ad;

select * from

(select (@ad := date_add(@ad, INTERVAL 15 MINUTE)) as solid_date from wp_posts limit 95) solid
left join
wp_posts
  on solid.solid_date = post_date

我不知道如何在mysql中生成任意数量的行,所以我只是从一个超过95行的表中进行选择(24小时*每小时4个约会,午夜减去一个) --我的wordpress post表。如果没有更好的方法(我是oracle专家,而不是mysql专家),那么没有什么可以阻止您创建这样一个表,并且只有一个列包含一个递增整数。也许没有一个:How do I make a row generator in MySQL?

在您看到wp_posts的地方,替换您的约会表的名称。在你看到日期的地方,替换你的开始日期。

上面的查询生成一个日期列表,从所选日期的午夜后15点开始(在我的示例中为2010-01-01)

如果只想查找空闲插槽,则可以添加WHERE appointments.primary_key_column_here IS NULL

请注意,您的规格中没有包括午夜。如果您希望在第一天午夜,请在15分钟之前在变量中开始日期,并将自己限制为96行。如果您希望在最后一天的午夜,只需将自己限制在96行

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

https://stackoverflow.com/questions/19088659

复制
相关文章

相似问题

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