PostgreSQL 在转换后将字符错误解释为数字
PostgreSQL misinterpreting characters as numbers after casting
我一直在按照示例 here 将日期转换为月份名称。但是,当我得到两个月的变化 window 时,第二个月的名称在某些字母的解释中变得支离破碎。
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'))
理想的结果是 2016DecemberJanuary
,但它 returns 类似于 2016December1721395anuar1
或 2016May17211181une
。
看来问题出在解释从 12 月到 1 月的转变的逻辑上。是什么原因造成的?
select to_char(now(),'January');
returns 类似 2457729anuar6
因为
J - Julian Day (integer days since November 24, 4714 BC at midnight UTC)
.
Y - last digit of year
您需要在格式字符串中引用字符串以防止将其解释为占位符:select to_char(now(),'YY, "January"');
我一直在按照示例 here 将日期转换为月份名称。但是,当我得到两个月的变化 window 时,第二个月的名称在某些字母的解释中变得支离破碎。
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'))
理想的结果是 2016DecemberJanuary
,但它 returns 类似于 2016December1721395anuar1
或 2016May17211181une
。
看来问题出在解释从 12 月到 1 月的转变的逻辑上。是什么原因造成的?
select to_char(now(),'January');
returns 类似 2457729anuar6
因为
J - Julian Day (integer days since November 24, 4714 BC at midnight UTC) .
Y - last digit of year
您需要在格式字符串中引用字符串以防止将其解释为占位符:select to_char(now(),'YY, "January"');