私はカラムがmonth
(integer
)のテーブルを持っています。この列には、1, 2, .. 12
のような値が格納されています。
しかし、私は月の名前をにする必要があります。PostgreSQLの番号から月の名前を取得
例: 値が1
の場合は、jan
と表示する必要があります。
私はカラムがmonth
(integer
)のテーブルを持っています。この列には、1, 2, .. 12
のような値が格納されています。
しかし、私は月の名前をにする必要があります。PostgreSQLの番号から月の名前を取得
例: 値が1
の場合は、jan
と表示する必要があります。
は、基本的にはすでに何を掲載@small_duckが、改善のカップル:
SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
テキスト4::text
に平野のキャストは、to_char(..)
は必要十分ではありません。
質問には、小文字の「jan」が尋ねられます。template pattern:mon
です。
出力をローカライズする場合は、テンプレートの前にmodifierTM
と接頭辞を付けます。
は、迅速な答えがあるかもしれませんが、によって可能であるように思わ:
:
select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
リターン '4月'。
あなたは機能にそれを回すことができます。
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
ありがとうございます。うまくいきました。 – user007
ちょっと - なぜ非常によく似た実装が月の名前全体を正しく解釈するのが難しいのでしょうか? YEAR(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 ') 目標は今年+今月の1ヶ月後だったので、2012年11月は2012年12月のように' 2012Dec 'にする必要があります。何らかの理由で、特定の文字がDec = 4ecまたはJan = 1721395anのように数値として返される – Phill