我有一张 table :
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
- 地点 0-6 - 工作日(周一至周日);
如何选择行:
SELECT * FROM table WHERE TIME(NOW()) BETWEEN 2_open AND 2_close
如果今天是星期三(索引:2)?
最佳答案
你的 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
关于mysql基于工作日的动态列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44424248/