2013-10-02 114 views
0

我有一個數據庫,它包含有關日常功能開放時間的信息。mysql - 將當前時間戳與兩個時間範圍進行比較

通常,數據庫只有函數ID和開放時間,但在這裏我以函數名爲例。

Table: opening_times 
| function_id | function_name | day_open | day_close | eve_open | eve_close | 
|-------------|------------------|------------|------------|------------|------------| 
| 1  | Charity Function | 1357027200 | 1357056000 | 1357063200 | 1357081200 | 

我想寫一個SQL語句,看到的函數是否具有:

  • 尚未開放日
  • 白天開放
  • 午休
  • 傍晚開放
  • 休息日

這顯然需要比較當前時間[stamp]和我存儲在數據庫中的兩個日期範圍。

有人可以幫助我做到這一點。一旦我有了語法,我會學習!

我可以做一個標準的IF語句,看看這是否是ONE時間範圍之間,但這顯然並不能達到效果,我需要:

謝謝!

回答

0

試試這個::

SELECT 

CASE IF UNIX_TIMESTAMP() BETWEEN ot.`day_open` AND ot.`day_close` 

THEN 'Within daytime open range' 
ELSE 'Not in daytime open range' END as open_status 
FROM opening_times ot 
+0

謝謝,但我們的目的是要找出如果函數是:尚未開啓的日子,白天 開放, 午休, 晚上營業或 關閉一天。謝謝 – BigDistance

0
SELECT 
    CASE 
     WHEN UNIX_TIMESTAMP() < ot.`day_open` 
      THEN 'Function has not started' 
     WHEN UNIX_TIMESTAMP() BETWEEN ot.`day_open` AND ot.`day_close` 
      THEN 'function open' 
     WHEN UNIX_TIMESTAMP() BETWEEN ot.`day_close` AND ot.`eve_open` 
      THEN 'Mid-Day Break'   
     WHEN UNIX_TIMESTAMP() BETWEEN ot.`eve_open` AND ot.`eve_close` 
      THEN 'Evening Open' 
     WHEN UNIX_TIMESTAMP() > ot.`eve_close` 
      THEN 'Closed for day' 
END AS function_open_status 
FROM opening_times ot WHERE ot.function_id=1 
相關問題