您可以同时使用YEAR(timestamp)和WEEK(timestamp),并在SELECT和GROUP BY子句中使用这两个表达式。
不是太优雅,但功能…
当然,你也可以在单个表达式中组合这两个日期部分,即类似的
SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc...
FROM ...
WHERE ..
GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))
编辑:作为Martin xx指出,你也可以使用YEARWEEK(mysqldatefield)函数,虽然它的输出不像上面的较长公式眼睛友好。
编辑2 [3 1/2年后!]:具有可选的第二参数(mode)设置为0或2的YEARWEEK(mysqldatefield)可能是按完整周(即,包括跨越1月1日的星期)聚合的最佳方式,如果这是所期望的。在这个答案中最初提出的YEAR()/ WEEK()方法的效果是将这种“跨越”周的聚合数据分为两个:一个与前一年,一个与新的一年。每年进行一次清理,最多有两个部分周,一个在任一端,通常在会计等方面是需要的,因为YEAR()/ WEEK()方法更好。