在nvarchar中格式化日期的更好方法

时间:2011-10-24 10:59:45

标签: tsql sql-server-2008

我需要在SQL 2008中使用类似“2011年10月24日”的日期格式,并且在转换功能中没有任何内置格式来获取此功能。我有两种方法来实现这一目标。任何人都可以指导我从以下两种方式获得执行和性能方面的最佳方法吗?

1) select  substring(convert(varchar(20),getdate(),106),8,4) + ' ' + 
        substring(convert(varchar(20),getdate(),106),4,3) + ' ' + 
        substring(convert(varchar(20),getdate(),106),1,3) 

2) SELECT DATENAME(YYYY,GETDATE()) + ' ' + CAST(DATENAME(MM,GETDATE()) AS VARCHAR(3)) + ' ' + DATENAME(DD,GETDATE())

更新:

请检查以下问题: customization on sql datetime format how? 我在这个问题上也给了answer,但是another answer比我的回答得到了更多的选票。所以我很困惑哪一个是最好的方式。

2 个答案:

答案 0 :(得分:2)

这是为了什么目的?

如果要将其传递给ASP.NET Web应用程序,则可以将日期保留为原始格式并更改应用程序级别的格式:

String.Format(Date, "yyyy MMM dd");

但是,如果需要在SQL级别进行格式化,则可以执行以下操作:

declare @Date datetime
SET @Date = GETDATE()

SELECT CAST(YEAR(@Date) as nvarchar(4)) + ' ' + SUBSTRING(DATENAME(month, @Date), 0, 4) + ' ' + CAST(DAY(@Date) as nvarchar(2))

答案 1 :(得分:0)