如何使用任意工作日作为一周的开始从MySQL中的日期中提取一周?

时间:2014-12-27 11:06:55

标签: mysql sql

我有一个数据集(比如,“x”标注“xdate”),我想逐周获得每周平均值。我可以使用SQL(对于MYSQL)这样做:

SELECT 
    YEAR(xdate), 
    WEEKOFYEAR(xdate), avg(x) 
FROM 
    xtable
GROUP BY 
    YEAR(xdate),
    WEEKOFYEAR(xdate);

但是,我还希望将这几周的工作日分为“周初”。看documentation,似乎可以使用参数来指示星期一或周一的周开始。我想打电话,本周开始是一周中的任何一天。所以平均值可能是从周三到周三,依此类推。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

如果添加一天,您可以将功能逻辑移动一天。

例如:

SELECT
  YEAR(xdate),
  WEEKOFYEAR(date_add(xdate, interval 1 day) ),
  avg(x)
FROM
  xtable
GROUP BY
  YEAR(xdate),
  WEEKOFYEAR(date_add(xdate, interval 1 day));

通过这种方式,您可以根据需要将一周的开头移动。