【问题标题】:How do you find out the DayOfTheWeek given a datetime in MySql?你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?
【发布时间】: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]

【问题讨论】:

    标签: sql mysql algorithm


    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 2015-02-08
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多