Sql server 如何从给定日期获取月份名称和年份?

Sql server 如何从给定日期获取月份名称和年份?,sql-server,Sql Server,如何从给定日期获取月份和年份的名称 此查询获取月份名称,但我希望输出如下 February, 2018 SELECT DATENAME(month, GETDATE()) AS 'Month Name' 有什么建议吗?在SQL Server 2012及更高版本中,即在所有受支持的版本中,您可以使用.NET格式字符串格式化值: SELECT DATENAME(MONTH, GETDATE()) + ', ' + CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR

如何从给定日期获取月份和年份的名称

此查询获取月份名称,但我希望输出如下

February, 2018

SELECT DATENAME(month, GETDATE()) AS 'Month Name'

有什么建议吗?

在SQL Server 2012及更高版本中,即在所有受支持的版本中,您可以使用.NET格式字符串格式化值:

SELECT DATENAME(MONTH, GETDATE()) + ', ' + CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4))
select format(getdate(),'MMMM, yyyy')
返回:

February, 2018
在早期版本中,您必须连接单个名称,例如:

SELECT DATENAME(MONTH, GETDATE()) + ', ' + DATENAME(YEAR,GETDATE())
要获得:

February, 2018
不过,更好的方法是在客户机上设置值的格式,例如设置报表或表单字段的格式字符串。客户机或报表创建者更容易知道用于显示日期的正确格式和区域设置

您可以传递区域设置标识符以指定区域设置,例如:

select format(getdate(),'MMMM, yyyy','fr-FR')
将返回:

février, 2018

不过,这只能被视为一种变通方法

为什么不连接字符串?
选择DATENAME(MONTH,GETDATE())+,“+DATENAME(YEAR,GETDATE())。在提问之前,试着自己做一点调查。如果您查看了
DATENAME
的文档,就会注意到您可以为第一个参数提供其他值。
选择DATENAME(month,GETDATE())+,“+DATENAME(Year,GETDATE())
您最好在客户端执行此操作。@NahuelFouilleul最好的选择是不要在服务器上格式化,而是让客户端/报表决定我在看到您的更新日期后删除了我的评论,但是为什么您要谈论服务器,查询是客户端的?@NahuelFouilleul查询运行服务器端。在客户端上,它们只是文本我知道,这就是为什么在查询中使用格式的原因。我会避免使用
格式
,只是因为它运行非常慢。尝试运行
格式
查询,然后对大小适中的数据集(至少包含100000多行)逐个运行
日期名
查询,并启用
设置统计时间。你会注意到执行时间上的巨大差异。