要优于一下方法
where (CONVERT(datetime,REPLACE(REPLACE(left('2005年2月4日',8),'年','-'),'月','-')))<=getdate()

解决方案 »

  1.   


    比较??是比较相隔的天数吗??Select DateDiff(d,Replace(Replace(Replace(N'2005年3月25日',N'年','-'),N'月','-'),N'日',''),GetDate()) As 相隔天数
      

  2.   

    倒,楼主自己写出来了,但是'2005年3月25日'前不加N,你的Replace可以得到日期吗??
      

  3.   


    declare @str varchar(50)
    set @str='2005年3月25日'
    select @strselect datediff(Day,replace(replace(replace(@str,'年','-'),'月','-'),'日',''),getdate())
      

  4.   

    我的想法是有没有可能将getdate()转换成年月日的格式在进行比较
    上面的方法太麻烦了
      

  5.   

    create function f(@d nvarchar(20))
    returns nvarchar(20)
    as
       begin
       --declare @date datetime
       declare @temp nvarchar(20)
       set @temp=@d
       while patindex('%[年月日]%',@temp)>0
         begin
           set @temp=stuff(@temp,patindex('%[年月日]%',@temp),1,'-')
         end
       return(convert(datetime,left(@temp,len(@temp)-1),120))
       end
    goselect dbo.f('2005年3月25日')
    select datediff(d,dbo.f('2005年3月25日'),getdate())drop function f
      

  6.   

    楼主自己的replace方法应该是最简的了
      

  7.   

    楼主在等这个:
    select convert(varchar,datepart(year,getdate()))+'年'+convert(varchar,datepart(month,getdate()))+'月'
           +convert(varchar,datepart(day,getdate()))+'日'吗?^_^
      

  8.   

    不过楼主应该明白'2005年2月4日'不是日期格式,你最后就用replace
    select datediff(day,REPLACE(REPLACE(left('2005年2月4日',8),'年','-'),'月','-'),convert(varchar(10),getdate(),120))
    返回相差的天数。
    用到where中直接判断就可以了。
    比如小于100天:
    where datediff(day,REPLACE(REPLACE(left('2005年2月4日',8),'年','-'),'月','-'),convert(varchar(10),getdate(),120))<100
      

  9.   

    where (CONVERT(datetime,REPLACE(REPLACE(left('2005年2月4日',8),'年','-'),'月','-')))<=getdate()
    你寫的已經是很好的了阿,還要怎麼版
      

  10.   

    楼主的'2005年3月25日' 在数据库里只能是字符型的,你要转换日期型的再作比较的话,要语言不超过
    20个字符什么啊, 在SQL里还没有这样的函数!