to_date() accepts wrong input data

Started by Andreas Kretschmerover 13 years ago2 messagesgeneral
Jump to latest
#1Andreas Kretschmer
akretschmer@spamfence.net

Hi,

I'm a little bit astonished:

test=*# select to_date('2012/30/03','yyyy/mm/dd');
to_date
------------
2014-06-07
(1 row)

test=*# select to_date('2013/02/29','yyyy/mm/dd');
to_date
------------
2013-03-01
(1 row)

Bug or feature? Version is 9.2.0

Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082�, E 13.56889�

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andreas Kretschmer (#1)
Re: to_date() accepts wrong input data

Andreas Kretschmer <akretschmer@spamfence.net> writes:

Hi,
I'm a little bit astonished:

test=*# select to_date('2012/30/03','yyyy/mm/dd');
to_date
------------
2014-06-07
(1 row)

test=*# select to_date('2013/02/29','yyyy/mm/dd');
to_date
------------
2013-03-01
(1 row)

Bug or feature? Version is 9.2.0

Feature, I'm afraid --- people are used to that behavior, see eg
http://archives.postgresql.org/pgsql-general/2012-10/msg00209.php

If you want tighter checking, don't use to_date, use the regular
datetime input functions (eg, via a cast to date or timestamp).

regards, tom lane