检索出三天以前的记录
select * from 表 where datediff(dd,convert(datetime,dt),getdate())>3
子段转换为datetime类型的数据,
alter table 表 alter column dt datetime

解决方案 »

  1.   

    select * from test where datediff(day,dt,getdate())=3
      

  2.   

    select * from test where datediff(day, cast(dt as datetime), getdate()) >= 3select cast(dt as datetime) from test
      

  3.   

    select convert(datetime,dt) from test where datediff(day,dt,getdate())>3
      

  4.   

    select convert(datetime,dt) from test where datediff(day,dt,getdate())>3
      

  5.   

    1:
    select * from 表 where datediff(day,dt,getdate())>3
    2:
    alter table 表 alter column dt datetime
      

  6.   

    当你与时间类型比较的时候sqlserver会自己隐式转化。
      

  7.   

    我用了各位兄弟的语句,但是查询分析器返回错误说:
    将 expression 转换为数据类型 datetime 时发生算术溢出错误。
    这是为什么呢?
      

  8.   

    另外请各位兄弟帮忙一下这个贴子
    http://expert.csdn.net/Expert/topic/2269/2269995.xml?temp=.1662866
      

  9.   

    你的表中,具有不规范的数据,不能转换成日期型,改一下:select convert(datetime,dt) from test where case when isdate(dt)=1 then datediff(day,dt,getdate()) else 0)>3
      

  10.   

    你的表中,具有不规范的数据,不能转换成日期型,改一下:select convert(datetime,dt) from test where case when isdate(dt)=1 then datediff(day,dt,getdate()) else 0 end>3
      

  11.   

    select * from test where isdate(dt) = 1 and datediff(day, cast(dt as datetime), getdate()) >= 3select cast(dt as datetime) from test where isdate(dt) = 1