你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?

Posted

技术标签:

【中文标题】你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?【英文标题】:How do you find out the DayOfTheWeek given a datetime in MySql? 【发布时间】:2009-12-01 07:34:28 【问题描述】:

给定 mysql 5 中的日期时间列,我想找出星期几?

但是函数 DAYOFWEEK 为星期日返回 1。

我希望 1 表示星期一,2 星期二等。7 表示星期日。

是否有单行(可以嵌入到更大的 SQL 语句中)实现此功能?

f(x) => y

such that:
   f(1) = 7
   f(n) = n-1 for n in range [2,7]

【问题讨论】:

【参考方案1】:

一个纯算术公式

SELECT ((DAYOFWEEK(myDate) + 5) % 7) + 1 AS MondayBasedDOW

虽然在 SQL 中我们经常使用 CASE 语句 来解决这个问题(参见 astender 的回答)

SELECT CASE WHEN DAYOFWEEK(myDate) = 1 THEN 7 ELSE DAYOFWEEK(myDate) -1 END
       AS MondayBasedDOW

现在... MySQL 还提供了 WEEKDAY() 函数,类似于 DAYOFWEEK() ,但是是

每周一 从零开始

即星期一 = 0,星期二 = 1 ... 星期日 = 6 所以你可以简单地使用

SELECT WEEKDAY(myDate) + 1 AS MondayBasedDOW

当然,这比使用模算术有趣得多;-)

【讨论】:

【参考方案2】:

你可以试试 CASE WHEN = 1 THEN 7 ELSE n -1 END

【讨论】:

以上是关于你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?的主要内容,如果未能解决你的问题,请参考以下文章