MySQL DAYOFWEEK()是否相反?

MySQL DAYOFWEEK()是否相反?,mysql,date,dayofweek,Mysql,Date,Dayofweek,我正在MySQL中寻找一种将整数(0-6)转换为一周中某一天的方法,类似于: EXAMPLE_FUNCTION(3) = Wednesday. 这个函数取一个日期,给你一个数字0-6,它对应于一周中的某一天(0=星期日,6=星期六),所以我在寻找与此相反的结果 DROP FUNCTION IF EXISTS DAYNUMBER; CREATE FUNCTION DAYNUMBER(s INT) RETURNS VARCHAR(10) RETURN elt(s+1, 'Sunday', 'Mon

我正在MySQL中寻找一种将整数(0-6)转换为一周中某一天的方法,类似于:

EXAMPLE_FUNCTION(3) = Wednesday.
这个函数取一个日期,给你一个数字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');
测试:

输出“星期一”

测试:


输出“星期一”。

此处的
DAYOFWEEK
功能应该很有用:

唯一的缺点是它希望输入日期,而不是日期。但这应该很容易纠正。只要从一个任意的日期开始,你知道它是在星期天(比如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

DAYOFWEEK
功能在这里应该很有用:

唯一的缺点是它希望输入日期,而不是日期。但这应该很容易纠正。只要从一个任意的日期开始,你知道它是在星期天(比如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


它不是反向的。第一个
intf(日期)
,第二个
字符串f(int)
<代码>英语教学(w+1,…)做一份工作。这将是一个非常简单的函数,你可以自己编写…@origamifreak2,我评论的第二部分呢?@vp_-arth啊,我现在看到了,对不起,我正忙着查看和回复其他评论。那肯定有用,谢谢。我希望有一个我可以调用的原生MySQL函数,就像我问题中的例子一样,但从目前的回答来看,似乎没有。这不是相反的。第一个
intf(日期)
,第二个
字符串f(int)
<代码>英语教学(w+1,…)做一份工作。这将是一个非常简单的函数,你可以自己编写…@origamifreak2,我评论的第二部分呢?@vp_-arth啊,我现在看到了,对不起,我正忙着查看和回复其他评论。那肯定有用,谢谢。我希望有一个我可以调用的原生MySQL函数,就像我问题中的例子一样,但是从目前的回答来看,似乎没有。这太过分了。使用本机SQL函数,例如
ELT(n+1'Sunday'、'Sunday'、'Sunday'、…)
我是SQL新手,所以我不知道该函数存在,但是的,这是一种更好的方法。谢谢你提出来。我会更新我的答案。
daynumber(0)
应该返回
sunday
dayofweek
@vp_arth获得了mathmroales和vp_arth(和spencer7593),谢谢你的帮助。我不知道有可能创建您自己的函数,也不知道elt函数的存在,很高兴知道。这太过分了。使用本机SQL函数,例如
ELT(n+1'Sunday'、'Sunday'、'Sunday'、…)
我是SQL新手,所以我不知道该函数存在,但是的,这是一种更好的方法。谢谢你提出来。我会更新我的答案。
daynumber(0)
应该返回
sunday
dayofweek
@vp_arth获得了mathmroales和vp_arth(和spencer7593),谢谢你的帮助。我不知道有可能创建自己的函数,也不知道elt函数存在,很高兴知道。谢谢,这个答案也很有效,而且更短。唯一的一个小缺点是必须在ADDDATE()函数中使用该日期。你是绝对正确的,我觉得其中的日期有点错误。你可以将它封装在一个函数中(就像@mathmorales那样)来隐藏它,但仍然。。。Tbh这不是我通常留给mySql的事情。我严格使用数据库进行数据存储和查询,并在应用程序代码中保留所有业务逻辑。但是,嘿,我今天也学到了mysql中的函数和elt,谁知道它什么时候会派上用场;-)谢谢,这个答案也很有效,而且更短。唯一的一个小缺点是必须在ADDDATE()函数中使用该日期。你是绝对正确的,我觉得其中的日期有点错误。你可以将它封装在一个函数中(就像@mathmorales那样)来隐藏它,但仍然。。。Tbh这不是我通常留给mySql的事情。我严格使用数据库进行数据存储和查询,并在应用程序代码中保留所有业务逻辑。但是,嘿,我今天也学到了mysql中的函数和elt,谁知道它什么时候会派上用场;-)