[英]MYSQL: Using DAYNAME() to get data for the nearest date to today
在我的mySQL数据库中,我有一列名为“ day”。 每个培训课程都有不同的一天-例如,U12在星期二和星期四有一天。 我想要的是获取最接近会话的数据(现在是星期二)。
SELECT *
FROM training
WHERE `day` > dayname(now())
AND `group` = 'U12s'
ORDER by `day`
LIMIT 1
这会带来一个结果,但是它会按字母顺序对“天”进行排序,因此结果是星期四而不是星期二。
我也试过
SELECT *
FROM training
WHERE `day` > dayofweek(CURDATE())
AND `group` = 'U12s'
LIMIT 1
但这根本没有结果。
有什么建议么?
JorgeCampos的解决方案和语法错误:
SELECT *
FROM training
WHERE `day` > dayname(now())
AND `group` = 'U12s'
ORDER BY CASE when `day` = 'Monday' then 1
when `day` = 'Tuesday' then 2
when `day` = 'Wednesday' then 3
when `day` = 'Thursday' then 4
when `day` = 'Friday' then 5
when `day` = 'Saturday' then 6
else 7 end case
LIMIT 1
错误:您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第11行的“ case LIMIT 1”附近使用
如果您的日列是日期的名称并且您的查询已经可以,但是顺序错误,则只需将日期转换为可以根据需要进行排序的值即可:
SELECT *
FROM training
WHERE `day` > dayname(now())
AND `group` = 'U12s'
ORDER BY CASE when `day` = 'Monday' then 1
when `day` = 'Tuesday' then 2
....
when `day` = 'Saturday' then 6
else 7 end
LIMIT 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.