比如有个数据库,有个字段叫发布时间,是datetime类型。里面的数据大概是"2012-3-11 10:00:01"这样的
请问如何写sql语句,实现按时段统计,即每小时内有多少数据,谢谢。

解决方案 »

  1.   

    select * 
    from 表
    where 发布时间>='2012-3-11 10:00:01'  and 发布时间>='2012-3-11 10:59:59' 
      

  2.   

    select * from table1 where dt <= getdate() and dt >= dateadd(hh,-1, getdate())Sql server 的写法
      

  3.   

    convert把时间字段转为'yyyy-mm-dd hh:mm:ss'字符串,按其左边13个字符group
      

  4.   


    select convert(varchar(13), 发布时间, 120) as 时间段, count(*) as 记录条数 from Table group by convert(varchar(13), 发布时间, 120)
      

  5.   

    where dt between ... and ...条件也不会写???只要符合日期格式就行了
      

  6.   

    ado1.CommandText :='SELECT COUNT(*),Format(发布时间,:pk1) FROM wbdata GROUP BY Format(发布时间,:pk1)';
    ado1.Parameters.ParamByName('pk1').Value :='HH';
    ado1.Open ;运行这个出现“不正常地定义参数对象。”请问怎么办?
      

  7.   

    ado1.CommandText :='SELECT COUNT(*),Format(发布时间,:pk1) FROM wbdata GROUP BY Format(发布时间,:pk1)';
    ado1.Parameters.ParamByName('pk1').Value :='HH';
    ado1.Open ;//ado1.CommandText :='SELECT COUNT(*),Format(发布时间,:pk1),Format(发布时间,:pk1)这里不这里不能:pk1参数不能这么写,直接ado1.CommandText :='SELECT COUNT(*),Format(发布时间,HH)或拼接变量
      

  8.   

    直接写肯定是错的,ado1.CommandText :='SELECT COUNT(*),Format(发布时间,HH)。
    这样写说HH参数没找到
      

  9.   

    ado1.CommandText :='SELECT COUNT(*),Format(发布时间,"HH")就可以了
      

  10.   

    select Count(*)  
    from 表
    where 发布时间>='2012-3-11 10:00:00' and 发布时间<'2012-3-11 11:00:00'