Mysql 匹配给定日期范围的周天数
我正在开发一个空间预订系统,并试图找出空间是否在给定的日期范围内可用。所以我有两张桌子-Mysql 匹配给定日期范围的周天数,mysql,datetime,Mysql,Datetime,我正在开发一个空间预订系统,并试图找出空间是否在给定的日期范围内可用。所以我有两张桌子- space_master id space_address start_time end_time space_availability space_id days_of_week 注- (a) 开始时间和结束时间是MYSQL中的日期时间字段 (b) 周中的天是数字,其中周日由1表示,以此类推 (c) 一个空间可以在多天内可用(示例如下) 这意味着第一个空间(id为
space_master
id space_address start_time end_time
space_availability
space_id days_of_week
注-
(a) 开始时间和结束时间是MYSQL中的日期时间字段
(b) 周中的天是数字,其中周日由1表示,以此类推
(c) 一个空间可以在多天内可用(示例如下)
这意味着第一个空间(id为1)在2012-03-18 10:21:00和2012-03-29 4:21:00之间可用,但仅在周日和周一可用。现在我正在尝试编写一个函数,它将booking_start_time和booking_end_time(MYSQL中的所有DATETIME)作为输入,然后扫描可用空间表并返回可用的预订。类似这样的事情-
getBooking(2012-03-19 10:21:00,2012-03-19 15:21:00)-返回id为1的空间(因为2012年3月19日是星期一,因此可用)
getBooking(2012-03-19 10:21:00,2012-03-20 15:21:00)-由于3月20日是星期二,空间不可用,因此不返回任何内容
你知道怎么做吗?我第一次尝试在一个查询中实现这一点。但这有可能吗
编辑:SQLFIDLE链接如下-
看,基本方法非常简单,真正的任务是获取给定时间跨度内的所有日期,有几种方法,但直到现在我还没有找到有用的方法(没有辅助日期表)
space_master
id space_address start_time end_time
1 Florida 2012-03-18 10:21:00 2012-03-29 4:21:00
2 London 2012-04-21 09:00:00 2012-06-18 10:00:00
space_availability
space_id days_of_week
1 1
1 2
2 4
2 5
2 6