2012-02-01 3 views

ответ

25

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

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

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

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

6

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

  • Включение ИНТ в строку
  • Чтение этой строки в качестве временной метки
  • Отображение месяца метки времени.

Например:

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 
+0

Спасибо, сэр .. Он отлично работает. – user007

+0

Эй, любая идея, почему очень похожая реализация будет затруднять правильное толкование всего названия месяца? ГОД (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

Смежные вопросы