无法将月份编号转换为名称

时间:2019-04-26 18:12:42

标签: sql sql-server tsql date

我有以下几行SQL:

$key = 'transaction_user_id';
$user_ids = [];
$next_id = 1;

foreach ($your_data as $index => $transaction) {
    if (isset($transaction[$key])) {
        if (!isset($user_ids[$transaction[$key]])) {
            $user_ids[$transaction[$key]] = $next_id++;
        }
        $your_data[$index][$key] = $user_ids[$transaction[$key]];
    }
}

它重新调谐例如SELECT CONCAT(CONCAT(MONTH('YEAR-MM-01'), CONCAT(' ', YEAR('YEAR-MM-01'))), ' | ') AS period; 。我希望将3替换为3月

任何帮助都将受到欢迎。

6 个答案:

答案 0 :(得分:3)

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

需要明确的是,format()具有一些强大的功能,但性能可能会受到影响。应该少量使用

示例

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

返回

April, 2019 | 

答案 1 :(得分:2)

使用

datename(month, '2000/01/02')

您可以获得月份名称:

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

答案 2 :(得分:2)

使用类似这样的内容:

select 
    concat(
        datename(month, getdate()),
        ' ',
        year(getdate()),
        ' | '
    ) as period

如果您的输出以前是3 2019 |,则查询看起来像这样March 2019 |

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

答案 3 :(得分:1)

这适用于您的示例:

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

答案 4 :(得分:1)

只需使用FORMAT函数格式化日期/日期时间值:

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

格式说明符的完整列表为available here

答案 5 :(得分:0)

使用DATENAME来获取月份的名称。

SELECT CONCAT(DATENAME(mm,'YEAR-MM-01'),'',YEAR('YEAR-MM-01'))