使用DAYOFWEEK查询MySQL日期

时间:2018-01-10 18:48:09

标签: mysql date

我的MySQL表格(不同开放日期的栏目):

id  name    days_open
----------------------------------------
1   diner   mo tu we th fr
2   joes    fr sa su
3   jimmy   sa su
4   tree    su mo 

我的问题:我在接下来的7,14或30天寻找开放的酒吧。现在的第一个日期是:2018-01-10(我们)

这应该是查询的结果:

date        name
----------------------------------------
2018-01-10  diner       (we)

2018-01-11  diner       (th)

2018-01-12  diner       (fr)
2018-01-12  joes        (fr)

2018-01-13  joes        (sa)
2018-01-13  jimmy       (sa)

2018-01-14  joes        (su)
2018-01-14  jimmy       (su)
2018-01-14  tree        (su)

... 

下一天(7日,14日或30日)

我已经使用DAYOFWEEK(CURDATE())尝试了几个请求,但没有得到正确的结果。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如下所示更改您的表格设计,并在接下来的15或30天内使用任何服务器端语言循环。或编写程序以获得下一个30天的清单。

users
-----

id  name   
-----------
1   diner  
2   joes   
3   jimmy  
4   tree   

day_opens
---------

id  day user_id
-------------------------
1   2   1
2   3   1
3   4   1
4   6   2
5   7   2


SELECT CURDATE(), u.name, DAYNAME(CURDATE()) FROM day_opens o, users u WHERE o.user_id = u.id AND o.day = DAYOFWEEK(CURDATE());

如果您使用服务器端语言更改您的查询,如下所示并动态更改间隔日。

SELECT ADDDATE(CURDATE(), INTERVAL 1 DAY), u.name, DAYNAME(ADDDATE(CURDATE(), INTERVAL 1 DAY)) FROM day_opens o, users u WHERE o.user_id = u.id AND o.day = DAYOFWEEK(ADDDATE(CURDATE(), INTERVAL 1 DAY));