Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

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

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group