用周显示周开始日期()

时间:2014-10-27 16:52:04

标签: mysql sql week-number

我正在使用周函数:

SELECT 
    sub.id AS ARID,
    WEEK(my.data) AS Week,

是否可以添加周对应的周开始日期?

类似的东西:

SELECT 
    sub.id AS ARID,
    WEEK(my.data) AS Week,
    MIN(my.data) AS WKBeginning

以这种方式使用MIN我无意中删除了大量数据 - 它甚至应该与数据分离。换句话说,我想将周显示为日期而不是“星期一 - 2014-09-04”中的数字

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果源表没有包含本周的完整日期范围(特别是一周的第一天),我的第一个答案结果是不正确的。

正确的方法是使用ADDDATE()

ADDDATE(my.data, INTERVAL 1-DAYOFWEEK(my.data) DAY) AS CorrectWKBeginning,

当数据中未包含数据的第一天时,相关的子查询

SELECT 
  id,
  WEEK(d) AS Week,
  ADDDATE(d, INTERVAL 1-DAYOFWEEK(d) DAY) AS CorrectWKBeginning,
  (SELECT MIN(d) FROM t WHERE WEEK(d) = WEEK(t2.d)) as IncorrectWKBeginning
FROM t t2

Sample SQL Fiddle

您可能必须使用带参数的week()来设置一周的开始日期,如果它从0-53或1-53开始计算,请参阅MySQL manual for reference