Не могу преобразовать номер месяца в имя - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть следующая строка SQL:

SELECT CONCAT(CONCAT(MONTH('YEAR-MM-01'), CONCAT(' ', YEAR('YEAR-MM-01'))), '  |  ') AS period;

Это повторяет, например 3 2019.Я хочу заменить 3 на март

Любая помощь будет приветствоваться.

Ответы [ 6 ]

3 голосов
/ 26 апреля 2019

Просто потому, что никто не упомянул format()

Для ясности, format () обладает отличной функциональностью, но производительность может пострадать.Следует использовать экономно .

Пример

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

Возвращает

April, 2019 | 
2 голосов
/ 26 апреля 2019

Используйте что-то вроде этого:

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
2 голосов
/ 26 апреля 2019

Используя

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

Вы можете получить название месяца:

select  concat(concat(datename(month,'YEAR-MM-01'),concat(' ',year('YEAR-MM-01'))),'  |  ') as period;
1 голос
/ 26 апреля 2019

Просто отформатируйте значение даты / даты / времени, используя функцию FORMAT:

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

Полный список спецификаторов формата доступен здесь .

1 голос
/ 26 апреля 2019

Это работает для вашего примера:

select datename(month, cast(replace('1 ' + v.str, ' ', '-') as date)) + right(str, 5)
from (values ('3 2019')) v(str)
0 голосов
/ 26 апреля 2019

Вместо этого используйте DATENAME, чтобы получить название месяца.

ВЫБРАТЬ КОНКАТ (DATENAME (mm, 'YEAR-MM-01'), '', YEAR ('YEAR-MM-01'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...