繁体   English   中英

MYSQL:使用DAYNAME()获取到今天最近的数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM