Sql 知道6个月前的哪个月,并用西班牙语显示姓名

Sql 知道6个月前的哪个月,并用西班牙语显示姓名,sql,postgresql,Sql,Postgresql,我是postgres的新手,我正在尝试创建一个查询,以获取从今天开始的6个月前是哪一个月。 我还想用西班牙语显示这个月的名字 例如:今天的月份是“五月”,六个月前是“十一月”,所以我想用西班牙语“Noviembre”显示月份的名称 这是我尝试执行此操作的方式,但它仅显示空行: select ( case when to_char(current_date-interval '6 Month','Month')='January' then 'Enero' w

我是postgres的新手,我正在尝试创建一个查询,以获取从今天开始的6个月前是哪一个月。 我还想用西班牙语显示这个月的名字

例如:今天的月份是“五月”,六个月前是“十一月”,所以我想用西班牙语“Noviembre”显示月份的名称

这是我尝试执行此操作的方式,但它仅显示空行:

    select 
( 
    case 
    when to_char(current_date-interval '6 Month','Month')='January' then 'Enero'
    when to_char(current_date-interval '6 Month','Month')='February' then 'Febrero'
    when to_char(current_date-interval '6 Month','Month')='March' then 'Marzo'
    when to_char(current_date-interval '6 Month','Month')='April' then 'Abril'  
    when to_char(current_date-interval '6 Month','Month')='May' then 'May'
    when to_char(current_date-interval '6 Month','Month')='June' then 'Junio'
    when to_char(current_date-interval '6 Month','Month')='July' then 'Junio'
    when to_char(current_date-interval '6 Month','Month')='August' then 'Agosto'
    when to_char(current_date-interval '6 Month','Month')='September' then 'Septiembre' 
    when to_char(current_date-interval '6 Month','Month')='October' then 'Octubre'
    when to_char(current_date-interval '6 Month','Month')='November' then 'Noviembre'
    when to_char(current_date-interval '6 Month','Month')='December' then 'Diciembre'
    end
) as "Hace 6 Meses"
from "recibopagoderechoslaborales";

您只需为您的客户调整
lc\u时间

so=# set lc_time = 'es_ES';
SET
so=# select to_char(now() - '6 month'::interval,'TMMonth');
  to_char
-----------
 Noviembre
(1 row)
没有本地化看起来:

so=# set lc_time to default ;
SET
so=# select to_char(now() - '6 month'::interval,'TMMonth');
 to_char
----------
 November
(1 row)

您只需为您的客户调整
lc\u时间

so=# set lc_time = 'es_ES';
SET
so=# select to_char(now() - '6 month'::interval,'TMMonth');
  to_char
-----------
 Noviembre
(1 row)
没有本地化看起来:

so=# set lc_time to default ;
SET
so=# select to_char(now() - '6 month'::interval,'TMMonth');
 to_char
----------
 November
(1 row)

有两件事可以改进您的原始表达式:
case extract(从当前日期开始的月份-间隔“6个月”)当1时,然后是“Enero”,当2时,然后是“Febrero”,当3时,然后是“Marzo”。。。结束
@Abelisto这是最简单的方法。我打算这样做。谢谢。有两件事可以改进您的原始表达式:
case extract(从当前日期开始的月份-间隔“6个月”)当1时,然后是“Enero”,当2时,然后是“Febrero”,当3时,然后是“Marzo”。。。结束
@Abelisto这是最简单的方法。我打算这样做。谢谢。它在我的操作系统上失败了,
set lc_time='jp_-jp'例如。实际上,本地化任务并不是那么简单,它肯定不是DBMS的问题(假设DBMS应该返回月份索引,比如3或7左右,而不是它的本地化符号)。(已经投票给
TMMonth
从未使用过这样的东西)它在我的操作系统上失败了
set lc_time='jp_-jp'例如。实际上,本地化任务并不是那么简单,它肯定不是DBMS的问题(假设DBMS应该返回月份索引,比如3或7左右,而不是它的本地化符号)。(已经投票支持
TMMonth
从未使用过这种东西)