У меня есть стол с колонкой month
(integer
). В этом столбце хранятся значения, такие как 1, 2, .. 12
.
Но я должен показать месяц имя.Получить месяц имя из числа в PostgreSQL
Ex: Если значение 1
Мне нужно отобразить jan
.
У меня есть стол с колонкой month
(integer
). В этом столбце хранятся значения, такие как 1, 2, .. 12
.
Но я должен показать месяц имя.Получить месяц имя из числа в PostgreSQL
Ex: Если значение 1
Мне нужно отобразить jan
.
В основном то, что @small_duck уже писал, но несколько улучшений:
SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
Простой бросок к тексту 4::text
достаточно, нет необходимости в to_char(..)
.
Вопрос запрашивает нижний регистр «jan», есть template pattern для этого: mon
.
Если вы хотите локализовать вывод, приформите шаблон с помощью modifierTM
.
Там может быть быстрее ответ, но это, кажется возможным:
Например:
select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
возвращает 'Апрель'.
Вы можете превратить его в функцию:
create function to_month(integer) returns varchar as
$$
select to_char(to_timestamp(to_char($1, '999'), 'MM'), 'Mon');
$$ language sql
и использовать его на протяжении всего кода.
select to_month(month_column) from mytable
Спасибо, сэр .. Он отлично работает. – user007
Эй, любая идея, почему очень похожая реализация будет затруднять правильное толкование всего названия месяца? ГОД (DM.DATE) || TO_CHAR (TO_TIMESTAMP (to_char ( \t \t случай \t \t \t когда \t \t \t \t месяц (DM.DATE) +1> 12 затем 1 \t \t \t \t еще месяц (DM.TM_DIM_KY_DTE) +1 конец \t \t \t, '99 '),' MM '),' Mon ') Цель должна состояться в текущем году плюс месяц после текущего месяца, так что в ноябре 2012 года должен быть декабрь 2012 года, как «2012Dec». По некоторым причинам некоторые буквы возвращаются как числа, такие как Dec = 4ec или Jan = 1721395an – Phill