有一个表如table
表中其中有一段名为datetime  类型名为时间类型(年,月,日,小时)
现在我想把某段日期的同一时间的数据select出来。比如2002-12-1 到2002-12-4
4 Am的数据选出来,(注意是每天的同一时间 4AM)sql的where语句该怎样写。
是不是sql中有个日期的分解函数?具体是什么?先谢了。在线等!!!!

解决方案 »

  1.   

    WHERE (Hour(DateField)=4) AND 
    ((DateDiff("d", '2002-12-1', DateField) > 0) AND 
     (DateDiff("d", DateField, '2002-12-1') > 0))
      

  2.   

    to:  realdreamer(贫僧也跟着来了) 
       (Hour(DateField)=4)没有这个用法吧?
      

  3.   

    抱歉, 发完没仔细看, 有点错误WHERE (Hour(DateField)=4) AND 
    ((DateDiff("d", '2002-12-1', DateField) > 0) AND 
     (DateDiff("d", DateField, '2002-12-4') > 0))HOUR(DateField)=4
    hour 函数, 取日期类型的的小时字段.像这样的表达式
    hour('2002-12-1 20:23:23') 将返回 20
      

  4.   

    不行啊。它提示:
    'hour' is not a recognized function name.
      

  5.   

    结论跟楼上一样!hour不是函数!但是在查询分析器打入时候,它会高亮显示!
    不知道什么原因
      

  6.   

    比较字符串的
    笨办法:
    where datetime > '2002-12-1' and datetime < '2002-12-4' and datetime like '%-4'
      

  7.   

    我认为楼上的做法可行,我试过这样:
    select * from 表名
      where cast(日期字段名 As char(20)) like '%4:00AM%'
            and 日期字段名>'2002-12-01 00:00:00'
            and 日期字段名<'2002-12-04 00:00:00'有个问题就是:我把秒加进(精确定位)时就匹配不出来,如‘%4:00:00%'或'%4:00:%'这样都不能匹配出一点点数据,怪了!
      

  8.   

    我试过下面的方法可以:
    where (DATEPART(hour,fieldname)=7) and ((DateDiff(day, '2002-12-1', fieldname) <=0)) 
    AND (DateDiff(day, 采样时间, '2002-12-4') >= 0)