I don't think the changes made in PG 12 are documented accurately. It
currently says:
to_timestamp and to_date matches any single separator in the input
string or is skipped
However, I think it is more accurate to say _multiple_ whitespace can
also be matched by a single separator:
SELECT to_timestamp('%1976','_YYYY');
to_timestamp
------------------------
1976-01-01 00:00:00-05
SELECT to_timestamp('%%1976','_YYYY');
ERROR: invalid value "%197" for "YYYY"
DETAIL: Value must be an integer.
-- two spaces
--> SELECT to_timestamp(' 1976','_YYYY');
to_timestamp
------------------------
1976-01-01 00:00:00-05
--> SELECT to_timestamp(E'\t\t\t1976','_YYYY');
to_timestamp
------------------------
1976-01-01 00:00:00-05
Proposed patch attached.
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
new file mode 100644
index d751766..b27f4d4
*** a/doc/src/sgml/func.sgml
--- b/doc/src/sgml/func.sgml
*************** SELECT regexp_match('abc01234xyz', '(?:(
*** 6390,6396 ****
<para>
A separator (a space or non-letter/non-digit character) in the template string of
<function>to_timestamp</function> and <function>to_date</function>
! matches any single separator in the input string or is skipped,
unless the <literal>FX</literal> option is used.
For example, <literal>to_timestamp('2000JUN', 'YYYY///MON')</literal> and
<literal>to_timestamp('2000/JUN', 'YYYY MON')</literal> work, but
--- 6390,6396 ----
<para>
A separator (a space or non-letter/non-digit character) in the template string of
<function>to_timestamp</function> and <function>to_date</function>
! matches multiple whitespace characters in the input string, a single separator, or nothing,
unless the <literal>FX</literal> option is used.
For example, <literal>to_timestamp('2000JUN', 'YYYY///MON')</literal> and
<literal>to_timestamp('2000/JUN', 'YYYY MON')</literal> work, but