以下查询(在MSSQL上)给出了问题的正确答案:每月收集多少IP。 我想知道如何每60天计算一次?
select MIN(rowdate) min_rowdate,
MAX(rowdate) max_rowdate,
count(distinct IP),
DATEPART(MONTH, rowdate) month_
from t_tbl tl (nolock)
where rowdate between '2015-01-01 00:00:00' and '2015-12-31 23:59:59'
group by DATEPART(MONTH, rowdate)
答案 0 :(得分:3)
你可以使用DATEDIFF
和一些简单的数学来获得它:
select MIN(rowdate) min_rowdate, MAX(rowdate) max_rowdate, count(distinct IP),
DATEDIFF(day, 0, rowdate) / 60 as day60
from t_tbl tl (nolock)
where rowdate >= '20150101' and rowdate < '20160101'
group by DATEDIFF(day, 0, rowdate) / 60
在这种情况下,它使用1900-01-01(0
被转换为什么)作为前60天的开始时间,所有后续时间段都从那里开始。
如果您想在报告期间使用不同的“固定点”,则应将其替换为0
作为DATEDIFF
的第二个参数。
(我还更正了您的WHERE
子句,以便它不排除在 2015年最后一秒期间发生的事件,即非零毫秒值