你如何在 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 中排序的多个日期范围查询给定月份的日期范围间隙