2013-10-02 63 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 
相关问题