Получайте имя месяца из числа в PostgreSQL
У меня есть таблица со столбцом month
(integer
). В этом столбце хранятся значения типа 1, 2, .. 12
.
Но я должен показать название месяца.
Пример:
Если значение 1
, мне нужно отобразить jan
.
Ответы
Ответ 1
В основном то, что уже опубликовал @small_duck, но несколько улучшений:
SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
-
Достаточно простого текста в тексте 4::text
, нет необходимости в to_char(..)
.
-
Вопрос задает "jan" в нижнем регистре: шаблон шаблона: mon
.
-
Если вы хотите локализовать вывод, префикс шаблона с помощью модификатора TM
.
Ответ 2
Возможно, будет более быстрый ответ, но, похоже, это возможно:
- Включение вашего int в строку
- Чтение этой строки как метка времени
- Отображение месяца метки времени.
Например:
select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
возвращает 'Apr'.
Вы можете превратить его в функцию:
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