Select * from DomainManagement where endtime<dateadd("d",30,now)
这个是30天后过期的
但是他包括过期了的也一次查出来了
 
 怎么写可以完整一点啊
 就是30天后过期,但是不包括已经过期的
 求高手帮帮
 谢谢了还有另一个数据表的endtime是文本类型的,怎么在SQL里转换成时间类型的
想上面那样可以跟现在时间对比
 或者吧现在时间转换成文本类型可以吗???

解决方案 »

  1.   

    看来不是MSSQL转换时间成字符也可以
      

  2.   

    Select * from DomainManagement where cast(endtime as datetime) <dateadd("d",30,now) 
      

  3.   

    --如果是sql serverSelect * from DomainManagement where endtime between getdate() and dateadd(d,30,getdate()) 
      

  4.   

    create table #YY
    (
      id int,
      endtime varchar(30)
    )
    insert into #YY select 1,'2009-12-1'
    insert into #YY select 2,'2010-2-1'
    insert into #YY select 3,'2010-3-1'
    insert into #YY select 4,'2010-2-11'
    insert into #YY select 5,'2010-5-12'
    insert into #YY select 6,'2010-4-14'
    insert into #YY select 6,'2010-5-14'select  * from #YY where cast(endtime as datetime)<dateadd(dd,30,getdate())
    id          endtime
    ----------- ------------------------------
    1           2009-12-1
    2           2010-2-1
    3           2010-3-1
    4           2010-2-11(4 行受影响)
      

  5.   

    endtime是文本类型
    convert(datetime,endtime)Select * from DomainManagement where convert(datetime,endtime) <dateadd("d",30,now) 
      

  6.   


    3Q 你的行哦还有一个问题可以帮帮不??
     endtime是文本类型的时候
    怎么弄
      

  7.   


    我的是Access数据库的
    这个有区别吗