Получайте имя месяца из числа в PostgreSQL

У меня есть таблица со столбцом month ( integer ). В этом столбце хранятся значения, такие как 1, 2, .. 12 .
Но я должен показать название месяца.

Пример: если значение равно 1 мне нужно отобразить jan .

В основном, что @small_duck уже отправил, но несколько улучшений:

 SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon') 
  • to_char(..) текст в тексте 4::text достаточно, нет необходимости в to_char(..) .

  • Вопрос запрашивает нижний регистр «jan», для этого есть шаблон шаблона : mon .

  • Если вы хотите локализовать вывод, префикс шаблона с помощью модификатора TM .

Ответ может быть более быстрым, но, похоже, это возможно:

  • Превращение int в строку
  • Чтение этой строки как метка времени
  • Отображение месяца метки времени.

Например:

 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