SQL Server中也用格式字符串定制日期转换为字符串
在C#中用惯了DateTime.ToString("yyyy-MM-dd"),DateTime.ToString("MM/dd/yyyy")这种日期与字符串的转换方式,在SQL server中没得用,于是乎写了个FUNCTION,功能跟.net 中的DateTime.ToString("formatprovide")方法差不多,不过只实现了日期部分,有兴趣的朋友可以把时间部分补充出来。
create function fn_DateToString(@date datetime, @format varchar(20))
returns varchar(20)
as
begin
declare @result varchar(20)
select @result = (replace(replace(replace(@format,'yyyy','20'+substring(convert(char(8),@date,3),7,2)),'MM',substring(convert(char(8),@date,3),4,2)),'dd',substring(convert(char(8),@date,3),1,2)))
return @result
end
returns varchar(20)
as
begin
declare @result varchar(20)
select @result = (replace(replace(replace(@format,'yyyy','20'+substring(convert(char(8),@date,3),7,2)),'MM',substring(convert(char(8),@date,3),4,2)),'dd',substring(convert(char(8),@date,3),1,2)))
return @result
end
使用:
select dbo.fn_datetostring(getdate(),'yyyy-MM-dd')
得到结果:2005-07-12
Convert(varchar(10),getdate(),121)
输出格式就是yyyy-mm-dd
要是转"2005|07|12"呢?
要什麽分隔不會轉出來用REPLACE嗎?
这么写,是可以像在.net环境下一样方便的得到各种格式的日期,而不用去查帮忙,去看是120,还是121还是什么什么。
上面的同志,我问你们,你们在转换日期时是用ToString("yyyyMMdd")多一些呢,还是用ToString("D")之类的多一些?如是前者,有以上疑问,我也就无语了。
"f", "F",
"g", "G",
"m",
"r",
"s",
"t", "T",
"u", "U",
"y",
这些是什么样的格式,你都说得出吗?