Sql Can';t将月号转换为名称

Sql Can';t将月号转换为名称,sql,sql-server,tsql,date,Sql,Sql Server,Tsql,Date,我有以下SQL语句行: SELECT CONCAT(CONCAT(MONTH('YEAR-MM-01'), CONCAT(' ', YEAR('YEAR-MM-01'))), ' | ') AS period; 例如,它重新运行3 2019。我想把3号换成3号 欢迎任何帮助。使用 datename(month, '2000/01/02') 您可以获得月份名称: select concat(concat(datename(month,'YEAR-MM-01'),concat(' ',ye

我有以下SQL语句行:

SELECT CONCAT(CONCAT(MONTH('YEAR-MM-01'), CONCAT(' ', YEAR('YEAR-MM-01'))), '  |  ') AS period;
例如,它重新运行
3 2019
。我想把3号换成3号

欢迎任何帮助。

使用

datename(month, '2000/01/02')
您可以获得月份名称:

select  concat(concat(datename(month,'YEAR-MM-01'),concat(' ',year('YEAR-MM-01'))),'  |  ') as period;

这适用于您的示例:

select datename(month, cast(replace('1 ' + v.str, ' ', '-') as date)) + right(str, 5)
from (values ('3 2019')) v(str)

使用类似以下内容:

select 
    concat(
        datename(month, getdate()),
        ' ',
        year(getdate()),
        ' | '
    ) as period
如果您的输出过去是
3 2019 |
,那么您的查询将如下所示,以获得
2019年3月|

select 
    concat(
        datename(month, cast('2019-03-01' as date)),
        ' ',
        year(cast('2019-03-01' as date)),
        ' | '
    ) as period

改为使用DATENAME获取月份名称


选择CONCAT(DATENAME(mm,'YEAR-mm-01'),'',YEAR('YEAR-mm-01'))

只需使用
格式化功能格式化日期/日期时间值:

SELECT FORMAT(GETDATE(), 'MMMM yyyy')

格式说明符的完整列表是。

只是因为没有人提到
format()

需要明确的是,format()有一些很棒的功能,但性能可能会受到影响。应尽量少用它

示例

Select format(GetDate(),'MMMM, yyyy | ')
返回

April, 2019 | 

您的问题与示例代码有什么关系?是否有办法修改此选项并将月份作为名称而不是数字返回?不知道示例代码应该代表什么。但是,如果您有实际的日期时间,您可以使用它来获取日期部分的名称。感谢您的提示,这对您很有用@斯特雷克。这和你的问题有什么关系?您有一个示例字符串
'3 2019'
,它实际上与
getdate()
无关。