Timestamp parsing with blanked time part

Started by Ireneusz Plutaover 14 years ago2 messagesgeneral
Jump to latest
#1Ireneusz Pluta
ipluta@wp.pl

Hi,

consider the following:

select quote_literal(blank_hms) as "quote_literal(blank_hms)", blank_hms::timestamp as
"blank_hms::timestamp" from (select unnest(array['2011-07-22 :', '2011-07-22 : ', '2011-07-22 : :
']::text[]) as blank_hms) a; select version();

quote_literal(blank_hms) | blank_hms::timestamp
--------------------------+----------------------
'2011-07-22 :' | 2011-07-22 00:00:00
'2011-07-22 : ' | 2011-07-22 00:00:00
'2011-07-22 : : ' | 2011-07-22 00:00:00
(3 rows)

Time: 0.264 ms
version
------------------------------------------------------------------------------------------------------------------
PostgreSQL 9.0.3 on x86_64-manual_install-freebsd8.x, compiled by GCC cc (GCC) 4.2.1 20070719
[FreeBSD], 64-bit
(1 row)

The result is what might be expected by the common sense means.

Howewer, the input format of the example datetime strings is definitely wrong as far as I guess.
Some other datetime parsers reject it, the Perl DateTime::Format::Pg is an example.

Is this case a subject of eventual corrections in the future versions of postgres and it would start
emit errors then?

Thanks
Irek.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ireneusz Pluta (#1)
Re: Timestamp parsing with blanked time part

Ireneusz Pluta <ipluta@wp.pl> writes:

[ Postgres accepts timestamp input of the form '2011-07-22 :' ]
Some other datetime parsers reject it, the Perl DateTime::Format::Pg is an example.

Is this case a subject of eventual corrections in the future versions of postgres and it would start emit errors then?

No, it isn't. If we tightened that up, it would inevitably break
somebody else's application. And who's to say that DateTime::Format
is the best authority on what should be considered valid?

regards, tom lane