MySQL DAYOFWEEK() 反过来了?

MySQL DAYOFWEEK() in reverse?

我正在 MySQL 中寻找一种将整数 (0-6) 转换为星期几的方法,例如:

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)

输出'Monday'.

DAYOFWEEK 函数在这里应该会有帮助:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname

唯一的缺点是它需要一个日期作为输入,而不是天数。但这应该很容易补救。只需从您知道它属于星期日的任意日期开始(例如 2016-01-03)。然后 ADDDATE 你的天数就可以了。现在你有一个日期与你的天数在同一天,所以你可以 运行 通过 DAYOFWEEK 函数。

DAYNAME(ADDDATE("2016-01-03", :day))

通过 运行 以下示例亲自查看:

SELECT DAYNAME(ADDDATE("2016-01-03", "3")) # Wednesday
SELECT DAYNAME(ADDDATE("2016-01-03", "0")) # Sunday