在 PostgreSQL 中将双精度转换为文本时出现意外行为

Unexpected behavior when converting double precision to text in PostgreSQL

今天遇到这种奇怪的行为..

select                date_part('year', CURRENT_DATE);
2017
select        to_char(date_part('year', CURRENT_DATE),'9999');
" 2017"
select length(to_char(date_part('year', CURRENT_DATE),'9999'));
5

当然可以直接用to_char(CURRENT_DATE,'YYYY'),只是好奇为什么双精度数在转成文本的时候开头是空白的space。 谢谢!


备注:

此行为已记录(请参阅 examples table)。它离开 space 为负值的 - 符号。

似乎可以使用 FM 前缀来避免这种情况,即 'FM9999'.