mysql找出周末_MySQL找到第一个周末

本文介绍了一种查询特定场地在一周中的指定日期是否有空闲的方法。通过创建动态填充的日期表并与实际预订表进行对比,筛选出未被预订的日期。

我认为其他人都错过了这个问题......他们认为你的桌子可能已经在所有周末都有人口,有些状态是打开还是没有...我的猜测是你的桌子只有一个记录如果保留...因此,你需要找到根本不存在的记录...基于一些自动查找日期......

这是对我已完成的另一篇文章的修改here

虽然我没有更改查询的上下文,但我只放入与您的表关联的列。我知道你只是反对一个场地桌,所以我(实际上)。但是,为了理解“JustDates”别名,这个INNER PRE-QUERY通过对任何其他表进行笛卡尔连接来创建一个动态填充的所有日期表。在这种情况下,您的“Venue”预订表(我没有' t明确地看到你的实际表名引用,所以你必须改变它。因此,这实际上创建了一个表格,其中包含从“今天”开始的所有日期,并持续30天(通过限制),但可以是40,50,300或您需要的数量......提供“YourVenueTable”至少与您想要测试的天数一样多。 (在帖子中的相同澄清源于此)。这个结果集在30天,40天或多天内被预过滤仅在1周日或7周六的给定日期...所以它应该返回仅4月23日,4月24日,4月的结果集5月30日,5月1日,5月7日,5月8日,5月14日,5月15日,5月21日,5月28日等。

现在,您正在考虑前进的所有可能日期的动态创建结果集。现在,它将加入您的实际Venue Reservations表并被过滤为仅返回那些未找到您关注的id_venue的日期。在您的数据示例中,它将在4月23日和24日找到匹配并且不返回这些记录。与4月30日相同...但是,它会发现包含5月1日的资格预审清单中的记录将无法在场地表中找到日期匹配,因此包括您正在预期的...它将继续跳过5月7日和8日,然后返回5月14日,15日,21日,28日等......

select JustDates.OpenDate

from

( select

@r:= date_add( @r, interval 1 day ) OpenDate

from

( select @r := current_date() ) vars,

Venue

LIMIT 30 ) JustDates

where

DAYOFWEEK( JustDates.OpenDate ) IN ( 1, 7 )

AND JustDates.OpenDate NOT IN

( select Venue.date

from Venue

where Venue.id_venue = IDYouAreInterestedIn

and Venue.Date = JustDates.OpenDate )

order by

JustDates.OpenDate

注意,根据其他预订发布,对于预定日期可用日期的查询,上限为30以上,可以是系统中的任何表格,只要它至少有你想要期待的那么多天。预订...如果您想要即将到来的一年的所有可用性,您将需要用于笛卡尔结果的表中的365条记录来通过动态创建的“日期”记录来获取@r循环。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值