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