Получить название месяца из номера в PostgreSQL - PullRequest
18 голосов
/ 01 февраля 2012

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

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

Ответы [ 2 ]

33 голосов
/ 01 февраля 2012

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

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

  • В вопросе задается строчная буква "jan", для этого есть шаблон : mon.

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

6 голосов
/ 01 февраля 2012

Может быть более быстрый ответ, но, кажется, это возможно:

  • Превращение вашего 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...