0

出于某种奇怪的原因,按周分组返回带有日期时间字段的奇数日期间隔。

“已完成”是一个日期时间字段,并使用此查询:

SELECT 
    Completed, 
    COUNT( DISTINCT Table1.ID ) AS ActivityCount 
FROM Table1 
JOIN Table1Items 
ON Table1.ID = Table1Items.ID 
JOIN database_database.Table2 
ON Table2.Item = Table1Items.Item 
WHERE Completed != '0000-00-00' AND Completed >= '2012-09-25' AND Completed <= '2012-10-25' 
GROUP BY WEEK(Completed)

我越来越:

Completed  ActivityCount    CompletedTimestamp
2012-09-25  300            2012-09-25 00:00:00
2012-10-02  764            2012-10-02 00:00:00
2012-10-08  379            2012-10-08 00:00:00
2012-10-17  659            2012-10-17 00:00:00
2012-10-22  382            2012-10-22 00:00:00

有的相隔 7 天,有的相隔 6 天,有的相隔 5 天……还有一个相隔 9 天?

为什么它以如此奇怪的间隔而不是仅仅 7 天对日期进行分组?

4

2 回答 2

1

week函数不计算日期的差异。

week函数返回日期的周数。如果您按它分组,则该组中的日期将是一周的开始和结束以及中间的日期。单个日期之间的差异可以大于 7 天或更短。

于 2012-10-26T02:28:35.350 回答
0

正如 juergen d 所暗示的那样,答案是聚合日期列——使用 min 或 max 取决于您是否希望将一周的第一天或最后一天用作一致的间隔;例如:

SELECT MIN(Completed), COUNT(DISTINCT Table1.ID) AS ActivityCount FROM Table1 JOIN Table1Items ON Table1.ID = Table1Items.ID JOIN database_database.Table2 ON Table2.Item = Table1Items.Item WHERE Completed != '0000-00-00' AND Completed >= '2012-09-25' AND Completed <= '2012-10-25' 按周分组(已完成)

于 2012-10-31T12:53:49.467 回答