从PostgreSQL中的数字中获取月份名称

时间:2012-02-01 10:39:14

标签: sql postgresql date

我有一个包含列monthinteger)的表格。在此列中,我存储了1, 2, .. 12等值 但我必须显示月份名称

例: 如果值为1,则需要显示jan

2 个答案:

答案 0 :(得分:33)

基本上@small_duck已发布了什么,但有一些改进:

SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
  • 对文字4::text进行简单投射就足够了,不需要to_char(..)

  • 问题要求小写“jan”,有一个template patternmon

  • 如果要本地化输出,请在模板前加上modifier TM

答案 1 :(得分:6)

可能会有更快的答案,但似乎可以通过:

  • 将您的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
相关问题