Re: Bug in to_timestamp().
От | Steve Crawford |
---|---|
Тема | Re: Bug in to_timestamp(). |
Дата | |
Msg-id | CAEfWYywsvT1_PV7pFJhJZJ03R3DmgqgDaCjHpXJdCHSfCMY6fw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Bug in to_timestamp(). (Alex Ignatov <a.ignatov@postgrespro.ru>) |
Ответы |
Re: Bug in to_timestamp().
Re: Bug in to_timestamp(). |
Список | pgsql-hackers |
My observation has been that the PostgreSQL development group aims for correctness and the elimination of surprising results. This was part of the reason to eliminate a number of automatic casts to dates in earlier versions.
To me, 2016-02-30 is an invalid date that should generate an error. Automatically and silently changing it to be 2016-03-01 strikes me as a behavior I'd expect from a certain other open-source database, not PostgreSQL.
Cheers,
Steve
On Fri, Jun 24, 2016 at 8:52 AM, Alex Ignatov <a.ignatov@postgrespro.ru> wrote:
Alex Ignatov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
On 20.06.2016 17:09, Albe Laurenz wrote:Tom Lane wrote:Guys, do we need to change this behavior or may be you can tell me that is normal because this and this:I don't necessarily have an opinion yet. I would like to see more thanI can supply what Oracle 12.1 does:
just an unsupported assertion about what Oracle's behavior is. Also,
how should FM mode affect this?
SQL> SELECT to_timestamp('2016-06-13 15:43:36', ' YYYY/MM/DD HH24:MI:SS') AS ts FROM dual;
TS
--------------------------------
2016-06-13 15:43:36.000000000 AD
SQL> SELECT to_timestamp('2016-06-13 15:43:36', 'YYYY/MM/DD HH24:MI:SS') AS ts FROM dual;
TS
--------------------------------
2016-06-13 15:43:36.000000000 AD
SQL> SELECT to_timestamp('2016-06-13 15:43:36', 'YYYY/MM/DD HH24:MI:SS') AS ts FROM dual;
TS
--------------------------------
2016-06-13 15:43:36.000000000 AD
(to_timestamp_tz behaves the same way.)
So Oracle seems to make no difference between one or more spaces.
Yours,
Laurenz Albe
postgres=# SELECT TO_TIMESTAMP('2016-02-30 15:43:36', 'YYYY-MM-DD HH24:MI:SS');
to_timestamp
------------------------
2016-03-01 15:43:36+03
(1 row)
but on the other side we have :
postgres=# select '2016-02-30 15:43:36'::timestamp;
ERROR: date/time field value out of range: "2016-02-30 15:43:36"
LINE 1: select '2016-02-30 15:43:36'::timestamp;
Another bug in to_timestamp/date()?
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
В списке pgsql-hackers по дате отправления: