你如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

使用未在 Mysql 中排序的多个日期范围查询给定月份的日期范围间隙

mysql 如何把一年中的第几天,比如第300天 ,转换成日期

如何计算一个项目在mysql中给定日期出现的次数

我如何查询给定日期范围的mysql并加入两个表?

mysql 中日期的加减

用SQL语句计算出给定日期是星期几?