我有一张桌子:
id 0_open 0_close 1_open 1_close 2_open 2_close 3_open 3_close 4_open 4_close 5_open 5_close 6_open 6_close
1 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00
如何选择行:
SELECT * FROM table WHERE TIME(NOW()) BETWEEN 2_open AND 2_close
如果今天是星期三(索引:2)?
答案 0 :(得分:0)
您的SQL结构极度关闭。
通常会创建一个这样的表:
id, open, close, weekday
你可以像这样查询它
SELECT open, close WHERE weekday = DAYOFWEEK()
我猜你无法改变它,所以你被当前的桌子困住了。您可以像这样查询您的信息:
SELECT 0_open, 0_close FROM table WHEN DAYOFWEEK() = 0
UNION
SELECT 1_open, 1_close FROM table WHEN DAYOFWEEK() = 1
UNION
SELECT 2_open, 2_close FROM table WHEN DAYOFWEEK() = 2
UNION
SELECT 3_open, 3_close FROM table WHEN DAYOFWEEK() = 3
UNION
SELECT 4_open, 4_close FROM table WHEN DAYOFWEEK() = 4
UNION
SELECT 5_open, 5_close FROM table WHEN DAYOFWEEK() = 5
UNION
SELECT 6_open, 6_close FROM table WHEN DAYOFWEEK() = 6
答案 1 :(得分:0)
这是你必须在应用程序的业务层中处理的东西(即中间件/后端层中的一个函数,它以日期作为参数并返回列名)。
谈到这些功能,您还可以在function
中写一个MySQL
来获取日期,并返回两个值,这些值可以在上面的查询中使用。您可以使用MySQL
的{{3}}库函数来确定列名称。