鉴于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]
答案 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