PostgreSQL在转换后将字符误解为数字
Posted
技术标签:
【中文标题】PostgreSQL在转换后将字符误解为数字【英文标题】:PostgreSQL misinterpreting characters as numbers after casting 【发布时间】:2016-12-06 17:26:47 【问题描述】:我一直在按照示例 here 将日期转换为月份名称。但是,当我得到两个月的转换窗口时,第二个月的名称在某些字母的解释中变得支离破碎。
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
,但它会返回类似2016December1721395anuar1
或2016May17211181une
。
问题似乎在于从 12 月到 1 月的转变的逻辑。是什么原因造成的?
【问题讨论】:
【参考方案1】:select to_char(now(),'January');
返回类似 2457729anuar6
的内容,因为
J - 儒略日(自 4714 年 11 月 24 日 UTC 午夜以来的整数天) . Y - 年份的最后一位
Link.
您需要在格式字符串中引用字符串以防止将其解释为占位符:select to_char(now(),'YY, "January"');
【讨论】:
以上是关于PostgreSQL在转换后将字符误解为数字的主要内容,如果未能解决你的问题,请参考以下文章
c语言2 从键盘输入一个数字形式的字符串, 将其转换为相应的数字并输出. 例如输入的字符串是"123", 转换后将