【发布时间】:2014-01-10 10:06:30
【问题描述】:
WEEK() 或 WEEKOFYEAR() 返回一年中的一周。但是如果我想GROUP BY 一周,时间范围跨越多年,那么GROUP BY WEEK() 将不起作用。由于 WEEK 将返回相同的值,比如说 2010 年 1 月 3 日和 2011 年 1 月 3 日。如何解决这个问题?
【问题讨论】:
标签: mysql date datetime week-number
WEEK() 或 WEEKOFYEAR() 返回一年中的一周。但是如果我想GROUP BY 一周,时间范围跨越多年,那么GROUP BY WEEK() 将不起作用。由于 WEEK 将返回相同的值,比如说 2010 年 1 月 3 日和 2011 年 1 月 3 日。如何解决这个问题?
【问题讨论】:
标签: mysql date datetime week-number
按周和年分组:
GROUP BY YEAR(column), WEEK(column)
【讨论】:
GROUP BY 条件的顺序对操作没有影响,唯一的区别是美观
您还需要在GROUP BY 子句中选择YEAR。
SELECT .... GROUP BY YEAR( date_field ), WEEKOFYEAR( date_field ), WEEK( date_field );
您可以省略任何WEEK... 条件。
【讨论】:
自己找到了解决方案。 YEARWEEK(); 函数。按年和周分组并不能解决问题。在这种情况下,从 12 月开始到 1 月结束的一周将按年份分成两组。
【讨论】: