2013-02-20 37 views
0

我正試圖通過"Open Till at least"過濾器搜索場館。返回未來的運行時間

我遇到的問題是,有些場館通過8AM小時操作以6PM,有的從10PM3AM。一個不錯的SO成員幫助我創建了這個代碼,但是當我嘗試修改它進行搜索時,我注意到了一個問題。

如果我查詢的場地,是開放till at least 20:00,口試場地開放時間爲11AM21:00,那麼一切都OK

但是,如果我查詢開放時間爲till at least 20:00且營業時間從21:0003:00的場地,則返回closed

如何顯示仍然關閉的場館的營業時間?

這裏是我的代碼:

SELECT 
e.VENUE_NAME, 
hrs.opening_day, 
hrs.opening_time, 
hrs.closing_time 
FROM hours_of_operation hrs join venues e 
    on hrs.venue_id = e.id 
    and not is_closed 
    and ((hrs.opening_day=date_format('$phpWhenDate' - INTERVAL (closing_time<opening_time and time('$phpWhenDate')<closing_time) DAY, '%a')) 
      AND (closing_time<opening_time XOR 
     (time('$phpWhenDate') >= least(opening_time,closing_time) 
      and time('$phpWhenDate') < greatest(opening_time, closing_time)))) 

dataWhenDate看起來是這樣的:2013年2月21日04:00:00

基本上,我使用滑塊來選擇多久,我想會場至少打開,並且生成要發送的日期。

謝謝大家!

+1

我真的很希望你[正確地轉義你的SQL值](http://bobby-tables.com/php),否則你很快就會有一個非常糟糕的日子。 – tadman 2013-02-20 20:10:44

回答

1

嚴格地說場地是21:0003:00之間的開放,查詢開放時間till at least 20:00時應該真正迴歸爲封閉的,因爲它是在21:00開只。如果我是用戶,如果opening hours till at least 20:00會顯示僅在21:00處開放的場所,那麼它實際上會誤導我。

如果只是要表明其場館20:00開後則只是比較20:00與開啓和關閉時間會場如果任一大於20:00然後就是打開後20:00(但你可能想要把在星號向用戶解釋,開放過去20:00包括20:00後開放的場所)。