有没有办法将介于两个日期之间的记录分组?
例如,我的表中有如下记录:
rid stamp uid
25 2005-07-05 14:10:29 25
1175 2005-08-12 15:47:35 29
290 2005-11-22 16:38:53 42
30 2005-12-01 10:48:12 47
30 2006-01-02 17:34:28 52
30 2006-02-06 22:11:35 57
30 2006-04-17 15:10:19 59
1195 2006-05-08 21:55:56 62
100 2006-06-30 15:51:04 94
45 2006-07-03 21:14:37 24
我正在尝试编写一个查询,该查询将按年返回
February - August
月份之间和September - January
之间的记录计数,因此我得到的结果是:July 2005 - January 2006: 3
February 2006 - August 2006: 5
最佳答案
你可以在任何你想去的地方分组。如果你能在一个专栏里找到你想要的东西,你可以在上面分组。因此,在两个周期内,你可以简单地分组一个if:
SELECT * FROM table
GROUP BY if(stamp between "2005-07-01" and "2006-02-01", 0, 1)
如果您需要时段的范围超过较长的时间(多年),可以使用period_diff来区分:
SELECT * FROM table
GROUP BY floor(period_diff( DATE_FORMAT(stamp, "%Y%m"), "200507") / 6)
它将以年-月格式给出在日期和开始期间之间传递的6个月块的数目。