mysql基于工作日的动态列

标签 mysql select weekday

我有一张 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/

相关文章:

php - 在带有 MySQL 和多个表的 PHP 表单中使用复选框

linux - select调用的第一个参数是传入的要监听的fd的最大值加一

MySQL 将两条记录合并为一条

java - 如何使用数据库在服务器端管理帖子、评论、喜欢和不喜欢?

php - 给定一个查询,我如何找到生成它的 ORM 方法?

mysql - 如何用MySQL中以前的非零值替换零值?

php - 如何在 php 中找到最近的星期几?

在一周中找到连续几天的算法

java - 仅计算两个日期之间的工作时间(不包括 Java 中的周末)

php - INSERT INTO 表值 - mysql_query 到 PDO