簡體   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