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