0

我有一个数据库,其中包含有关日常功能的开放时间的信息。

通常,数据库只有函数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 语句,看看这是否在一个时间范围之间但这显然没有达到我需要的结果:

谢谢!

4

2 回答 2

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
于 2013-10-02T15:23:48.530 回答
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
于 2013-10-02T16:54:50.163 回答