我正在尋找在MySQL的方式,以一個整數(0-6)轉換爲一週的某一天,是這樣的:MySQL DAYOFWEEK()反向嗎?
EXAMPLE_FUNCTION(3) = Wednesday.
的DAYOFWEEK(date)
功能需要一個日期和給你一個數0- 6對應於星期幾(0 =星期日,6 =星期六),所以我正在尋找與此相反的情況。
我正在尋找在MySQL的方式,以一個整數(0-6)轉換爲一週的某一天,是這樣的:MySQL DAYOFWEEK()反向嗎?
EXAMPLE_FUNCTION(3) = Wednesday.
的DAYOFWEEK(date)
功能需要一個日期和給你一個數0- 6對應於星期幾(0 =星期日,6 =星期六),所以我正在尋找與此相反的情況。
DROP FUNCTION IF EXISTS DAYNUMBER;
CREATE FUNCTION DAYNUMBER(s INT) RETURNS VARCHAR(10)
RETURN elt(s+1, 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
測試:
SELECT DAYNUMBER(1)
輸出 '星期一'。
這是矯枉過正。使用原生SQL函數,如'ELT(n + 1'星期日','星期一','星期二',...)' – spencer7593
我是SQL新手,所以我不知道那個函數存在但是,這是一個更好的方式來做到這一點。感謝您提出這個問題。我會更新我的答案。 – mathmorales
'daynumber(0)'應該返回'星期日'以包含'dayofweek' –
的DAYOFWEEK
功能應該是有所幫助的位置:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname
唯一的缺點是,它需要一個日期作爲輸入,而不是每天數。但是,這應該很容易補救。從一個你知道星期天的任意日期開始(如2016-01-03)。然後你的一天號碼。現在您的日期與您的日數相同,您可以通過DAYOFWEEK
函數運行該日期。
DAYNAME(ADDDATE("2016-01-03", :day))
運行下面的樣本見自己:
SELECT DAYNAME(ADDDATE("2016-01-03", "3")) # Wednesday
SELECT DAYNAME(ADDDATE("2016-01-03", "0")) # Sunday
謝謝,這個答案也適用,而且它更短。唯一的小缺點是必須在ADDDATE()函數中使用該日期。 – origamifreak2
你是絕對正確的,那個日期在那裏讓我覺得有點不對勁。你可以把它封裝在一個函數中(像@mathmorales那樣)來隱藏它,但是仍然...這不是我通常留給mySql的東西。我嚴格使用數據庫進行數據存儲和查詢,並將所有業務邏輯保存在我的應用程序代碼中。但是,嘿,我也瞭解了今天mysql中的函數和elt,誰知道它何時可以派上用場;-) – Pevara
它不會扭轉。第一個'int f(date)',第二個'string f(int)'。 'elt(w + 1,...)'做了一份工作。 –
https://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_elt – CBroe
這將是一個非常簡單的函數來寫自己... – WillardSolutions