所以我有这张桌子。它有几百行。每行中都有一个日期时间字段。我需要完成的是获取给定时间段内有多少行,而不是整个时间段,而是该时间段的每一天。到此为止,我知道该怎么办。但是,此外,我还需要在表中没有值0的日期的行。
因此,例如:
2012-01-01 12:13 2012-01-01 43:32 2012-01-03 23:32
应该给我这样的结果:
2012-01-01 2 2012-01-02 0 2012-01-03 1
任何人都可以帮忙吗?
为了处理带有0条对应记录的日期,我的常规做法是使用日历表进行联接。
例如,创建一个表,其中一个字段称为,calendar_date并在其中填充从1st Jan 2000到的每个日期31st Dec 2070,或其他适合您报表目的的范围。
calendar_date
1st Jan 2000
31st Dec 2070
然后使用类似…
SELECT calendar.calendar_date, COUNT(*) FROM calendar LEFT JOIN yourData ON yourData.timeStamp >= calendar.calendar_date AND yourData.timeStamp < calendar.calendar_date + 1 WHERE calendar.calendar_date >= '01 Jan 2012' AND calendar.calendar_date < '04 Jan 2012' GROUP BY calendar.calendar_date
该表可以有许多其他用途,例如标记银行假期,几周和几个月的开始。通过谨慎使用标志和索引,您可以从中获得很多收益。