roundoff problem in time datatype
- From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
- To: pgsql-hackers(at)postgreSQL(dot)org
- Subject: roundoff problem in time datatype
- Date: Sun, 25 Sep 2005 13:26:25 -0400
- Message-id: <501(dot)1127669185(at)sss(dot)pgh(dot)pa(dot)us>
Inserting into a time field with limited precision rounds off, which
is good except for this case:
regression=# select '23:59:59.9'::time(0);
time
----------
24:00:00
(1 row)
This is bad because:
regression=# select '24:00:00'::time(0);
ERROR: date/time field value out of range: "24:00:00"
which means that data originally accepted will fail to dump and reload.
I see this behavior in all versions back to 7.3. 7.2 was even more
broken:
regression=# select '23:59:59.9'::time(0);
time
----------
00:00:00
(1 row)
I think the correct behavior has to be to check for overflow again
after rounding off. Alternatively: why are we forbidding the value
24:00:00 anyway? Is there a reason not to allow the hours field
to exceed 23?
regards, tom lane
Home |
Main Index |
Thread Index