PostgreSQL在施法后将字符错误地解释为数字

PostgreSQL在施法后将字符错误地解释为数字,sql,postgresql,date,casting,netezza,Sql,Postgresql,Date,Casting,Netezza,我一直在按照这个示例将日期转换为月份名称。然而,当我有一个两个月的转换窗口时,第二个月的名字在一些字母的解释中变得支离破碎 FISCAL_YEAR || TO_CHAR(TO_TIMESTAMP(to_Char(month(DATE_VAR),'999'), 'MM'), 'Month' || TO_CHAR(TO_TIMESTAMP(to_Char( case when month(D

我一直在按照这个示例将日期转换为月份名称。然而,当我有一个两个月的转换窗口时,第二个月的名字在一些字母的解释中变得支离破碎

FISCAL_YEAR 
        || TO_CHAR(TO_TIMESTAMP(to_Char(month(DATE_VAR),'999'), 'MM'), 'Month'
        || TO_CHAR(TO_TIMESTAMP(to_Char(
        case 
            when 
                month(DATE_VAR)+1>12 then 1 
                else month(DATE_VAR)+1 end
            ,'999'), 'MM'), 'Month'))
理想的结果是2016年12月1日
2016DecemberJanuary
,但它返回类似于
2016December1721395anuar1
2016May17211181une

问题似乎出在解释从12月到1月转变的逻辑上。原因是什么?

select to_char(now(),'一月')
返回类似于
2457729anuar6
的内容,因为

J-朱利安日(自公元前4714年11月24日午夜UTC起的整数天) .
Y-年度的最后一位数字

您需要在格式字符串中引用字符串,以防止将其解释为占位符:
select to_char(now(),'YY,'January')

选择to_char(现在(),'一月')
返回类似于
2457729anuar6
的内容,因为

J-朱利安日(自公元前4714年11月24日午夜UTC起的整数天) .
Y-年度的最后一位数字

您需要在格式字符串中引用字符串,以防止将其解释为占位符:
select to_char(now(),'YY,'January')