如题:    TABLE A :
    ... 字段 Contract         值  从2009-5-1到2009-5-12 问题: 如何从中取出时间,并作SQL搜索,例:select * from A where ContractFirstdate > '2009-5-1' and ContractEnddate < '2009-5-12'

解决方案 »

  1.   

    select * from A where datediff(d,'2009-5-1',ContractFirstdate)>0 and datediff(d,ContractEnddate,'2009-5-12')>0
      

  2.   

    有固定的格式就好说,用substring及charindex取出"从""到"之间的内容就是起始日期,"到"之后的内容作为截止日期.
      

  3.   

    declare @t table(Contract varchar(50))
    insert @tselect N'从2009-5-1到2009-5-12'select cast(left(replace(Contract,'从',''),charindex('到',replace(Contract,'从',''))-1) as datetime) ContractFirstdate,
    cast(right(replace(Contract,'从',''),(len(Contract)-charindex('到',replace(Contract,'从',''))-1)) as datetime) ContractEnddate 
    from @t
      

  4.   

    declare @t table(Contract varchar(50))
    insert @tselect N'从2009-5-1到2009-5-12'
    update @t set Contract = Replace(Contract ,' ','')
    select cast(left(replace(Contract,'从',''),charindex('到',replace(Contract,'从',''))-1) as datetime) ContractFirstdate,
    cast(right(replace(Contract,'从',''),(len(Contract)-charindex('到',replace(Contract,'从',''))-1)) as datetime) ContractEnddate 
    from @t
      

  5.   


    select * from A where
    datediff(d,'2009-4-1',convert(datetime,substring('从2009-5-1到2009-5-12',2,8),120))>0 and
    datediff(d,'2009-5-12',convert(datetime,substring('从2009-5-1到2009-5-12',2,8),120))<0