比较??是比较相隔的天数吗??Select DateDiff(d,Replace(Replace(Replace(N'2005年3月25日',N'年','-'),N'月','-'),N'日',''),GetDate()) As 相隔天数
倒,楼主自己写出来了,但是'2005年3月25日'前不加N,你的Replace可以得到日期吗??
declare @str varchar(50) set @str='2005年3月25日' select @strselect datediff(Day,replace(replace(replace(@str,'年','-'),'月','-'),'日',''),getdate())
我的想法是有没有可能将getdate()转换成年月日的格式在进行比较 上面的方法太麻烦了
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
比较??是比较相隔的天数吗??Select DateDiff(d,Replace(Replace(Replace(N'2005年3月25日',N'年','-'),N'月','-'),N'日',''),GetDate()) As 相隔天数
declare @str varchar(50)
set @str='2005年3月25日'
select @strselect datediff(Day,replace(replace(replace(@str,'年','-'),'月','-'),'日',''),getdate())
上面的方法太麻烦了
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
select convert(varchar,datepart(year,getdate()))+'年'+convert(varchar,datepart(month,getdate()))+'月'
+convert(varchar,datepart(day,getdate()))+'日'吗?^_^
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
你寫的已經是很好的了阿,還要怎麼版
20个字符什么啊, 在SQL里还没有这样的函数!