一个表,字段2个,id,created。id自增,created就是发表的日期,我做的是统计,统计每小时各发布多少。我现在用的是笨方法,for循环形式的,现在想知道SQL查询的方法 for (int i = 0; i < 24;i++ )
{
where = new StringBuilder("1=1");
if (i == 23)
{
where.Append(" and created between '" + today + " " + i + ":0:0' and '" + today + " " + i + ":59:59'");
dt = info.QueryTable(list, where.ToString(), " id");
if (dt != null && dt.Rows.Count != 0)
{
hoursum[i] = dt.Rows.Count.ToString();
}
else
{
hoursum[i] = "0";
}
}
else
{
where.Append(" and created between '" + today + " " + i + ":0:0' and '" + today + " " + (i + 1) + ":0:0'");
dt = info.QueryTable(list, where.ToString(), " id");
if (dt != null && dt.Rows.Count != 0)
{
hoursum[i] = dt.Rows.Count.ToString();
}
else
{
hoursum[i] = "0";
}
}
}
{
where = new StringBuilder("1=1");
if (i == 23)
{
where.Append(" and created between '" + today + " " + i + ":0:0' and '" + today + " " + i + ":59:59'");
dt = info.QueryTable(list, where.ToString(), " id");
if (dt != null && dt.Rows.Count != 0)
{
hoursum[i] = dt.Rows.Count.ToString();
}
else
{
hoursum[i] = "0";
}
}
else
{
where.Append(" and created between '" + today + " " + i + ":0:0' and '" + today + " " + (i + 1) + ":0:0'");
dt = info.QueryTable(list, where.ToString(), " id");
if (dt != null && dt.Rows.Count != 0)
{
hoursum[i] = dt.Rows.Count.ToString();
}
else
{
hoursum[i] = "0";
}
}
}
FROM (
SELECT DATEPART(Hour, [t0].[日期]) AS [value]
FROM [表名] AS [t0]
) AS [t1]
GROUP BY [t1].[value]
select datepart(hh,created) 小时,
count(1) 今天发布数量
from 你的表
where convert(varchar(8),created,112)=convert(varchar(8),getdate(),112)
group by datepart(hh,created);
SUBSTRING(CONVERT(VARCHAR,created,120),0,14) AS '时间',
COUNT(1) AS '数量'
FROM tablename
GROUP BY
SUBSTRING(CONVERT(VARCHAR,DATE,120),0,14)