你怎么知道在MySql中给出日期时间的DayOfTheWeek?

时间:2009-12-01 07:34:28

标签: sql mysql algorithm

鉴于mysql 5中的datetime列,我想找出一周中的哪一天?

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

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

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

f(x) => y

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

2 个答案:

答案 0 :(得分:5)

纯算术公式

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

但当然这比使用模数算法少得多; - )

答案 1 :(得分:1)

你可以试试 例如,当n = 1时,7 ELSE n -1 END