Получайте имя месяца из числа в 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