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

use*_*007 20 sql postgresql date

我有一个带有列month(integer)的表.在本专栏中,我存储的值如下1, 2, .. 12.
但我必须显示月份名称.

例如:如果值是1我需要显示jan.

Erw*_*ter 37

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

SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
Run Code Online (Sandbox Code Playgroud)
  • 对文本进行简单的转换4::text就足够了,不需要to_char(..).

  • 问题要求小写"jan",有一个模板模式:mon.

  • 如果要本地化输出,请在模板前添加修饰符 TM.


sma*_*uck 6

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

  • 把你的int变成一个字符串
  • 将该字符串作为时间戳读取
  • 显示时间戳的月份.

例如:

select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
Run Code Online (Sandbox Code Playgroud)

返回'4月'.

你可以把它变成一个函数:

create function to_month(integer) returns varchar as
$$
    select to_char(to_timestamp(to_char($1, '999'), 'MM'), 'Mon');
$$ language sql
Run Code Online (Sandbox Code Playgroud)

并在整个代码中使用它.

select to_month(month_column) from mytable
Run Code Online (Sandbox Code Playgroud)