在金融预测数据表中有一个字段“预测日期”是datetime类型,例如“2011-08-09 00:00:00.000”,由于该表数据量较大,仅对最近三个月的预测数据进行分析,即范围在“2011-05-09 00:00:00.000”和“2011-08-09 00:00:00.000”之间,问下在sql中使用什么函数来实现?谢谢各位大牛。

解决方案 »

  1.   

    where datediff(month,预测日期,getdate())<=3
      

  2.   

    select *
    from tablename
    where 预测日期>= dateadd(month.-3,getdate())
    and 预测日期<=getdate()
    预测日期加索引
      

  3.   

    select * from tb where datediff(month,[date],getdate())<3
      

  4.   

    更正select *
    from tablename
    where 预测日期>= dateadd(month,-3,getdate())
    and 预测日期<=getdate()
    细节上可能需要对getdate()格式化,暂时不改了
      

  5.   

    补充:当前日期通过CONVERT(varchar(100), GETDATE(), 21)获取,关键是如何在sql中计算出三个月前的日期是多少,好像datetime类型不支持加减操作。
      

  6.   

    DECLARE @Date DATETIME
    SET @Date = '2011-08-09 00:00:00.000'SELECT DATEADD(MONTH, -3, @Date)
      

  7.   

    select *
    from tablename
    where 预测日期>= dateadd(month,-3,CONVERT(varchar(100), GETDATE(), 21))
    and 预测日期<=CONVERT(varchar(100), GETDATE(), 21)
    dateadd就是日期类型的加减操作