一个表,字段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";
                        }
                    }
                }

解决方案 »

  1.   

    SELECT COUNT(*) AS [item], [t1].[value] AS [key]
    FROM (
        SELECT DATEPART(Hour, [t0].[日期]) AS [value]
        FROM [表名] AS [t0]
        ) AS [t1]
    GROUP BY [t1].[value]
      

  2.   


    select datepart(hh,created) 小时,
    count(1) 今天发布数量 
    from 你的表
    where convert(varchar(8),created,112)=convert(varchar(8),getdate(),112)
    group by datepart(hh,created);
      

  3.   

    SELECT 
    SUBSTRING(CONVERT(VARCHAR,created,120),0,14) AS '时间',
    COUNT(1) AS '数量' 
    FROM tablename
    GROUP BY 
    SUBSTRING(CONVERT(VARCHAR,DATE,120),0,14)