MYSQL:使用DAYNAME()获取最近的日期数据

时间:2015-07-31 16:24:32

标签: php mysql

在我的mySQL数据库中,我有一个名为'day'的列。每个培训课程都有不同的一天 - 例如,U12s在周二和周四有一个。我想要的是获取最近会话的数据(现在,那是星期二)。

SELECT * 
  FROM training 
 WHERE `day` > dayname(now()) 
   AND `group` = 'U12s' 
 ORDER by `day` 
 LIMIT 1

这会产生一个结果,但它会按字母顺序排序'day',因此结果是星期四而不是星期二。

我也试过

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服务器版本对应的手册,以便在'case附近使用正确的语法  在第11行限制1'

1 个答案:

答案 0 :(得分:0)

如果您的日期列是日期的名称,并且您的查询已经确定但订单错误,则只需将日期转换为可根据需要订购的值:

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