我用此条查询语句查询 能查出2012-09-15 00:00:00 的数据 请大侠们指教
select * from RawAlterDetailInfo where  RawAlterDetailInfo.EnterDate <= '2012-09-14 23:59:59'

解决方案 »

  1.   

    因为 RawAlterDetailInfo.EnterDates 是 smalldatetime用 where RawAlterDetailInfo.EnterDate < '2012-09-15'
      

  2.   

    因为59:59 被舍入了。 参考http://blog.csdn.net/orchidcat/article/details/5694139
    DECLARE @O SMALLDATETIME   --这个地方如果是datetime类型,结果将会不同
    DECLARE @i SMALLDATETIME   --SET @o = '2012-09-15 00:00:00'
    SET @i = '2012-09-14 23:59:59'SELECT CASE WHEN @o=@i THEN 'OK' ELSE 'Error' END 
      

  3.   

    楼上正解!你RawAlterDetailInfo.EnterDate字段类型是smalldatetime,你的语句RawAlterDetailInfo.EnterDate在和'2012-09-14 23:59:59'比较时,数据库会依据RawAlterDetailInfo.EnterDate类型,将'2012-09-14 23:59:59'转换成smalldatetime格式,那么你的语句就等价于
    select * from RawAlterDetailInfo where 
    RawAlterDetailInfo.EnterDate <= '2012-09-15 00:00:000'--此处smalldatetime精度为分钟你可以改为select * from RawAlterDetailInfo where RawAlterDetailInfo.EnterDate <'2012-09-15'
      

  4.   

    DECLARE @o DATETIME,  
     @i DATETIME   SET @o = '2012-09-15 00:00:00'
    SET @i = '2012-09-14 23:59:59'SELECT CASE WHEN @o=@i THEN 'OK' ELSE 'Error' END所在用DATETIME类型就行了