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

发布于 2024-12-12 03:44:54 字数 844 浏览 0 评论 0原文

我需要 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())

更新:

请检查以下问题: 如何自定义sql日期时间格式? 我还在这个问题中给出了答案,但是另一个答案获得的票数比我的答案多。所以我很困惑哪一种是最好的方法。

I need date format like "2011 Oct 24" in SQL 2008 and there is no any inbuilt format in convert function to get this. I got 2 ways to achieve this. Can anybody please guide me which are best way from following 2 ways to get it in terms of execution and performance ?

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())

UPDATE :

Please check below question :
customization on sql datetime format how?
I had also given answer in this question but another answer got more votes than my answer. So I am confused which one is best way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南城旧梦 2024-12-19 03:44:54

这样做的目的是什么?

如果将其传递给 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))

What is the purpose of this?

If you are passing this to an ASP.NET Web Application, you could keep the date in its raw format and change the format at the application level:

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

However, if you need to format at SQL level, you could do the following:

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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文