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