Thread: to_date() accepts wrong input data
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°
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