BUG #2996: to_char( timestamp, 'DD-Mon-YYYY HH24:MI:SS.MS' ) reports .1000 ms - Mailing list pgsql-bugs

From Anthony Taylor
Subject BUG #2996: to_char( timestamp, 'DD-Mon-YYYY HH24:MI:SS.MS' ) reports .1000 ms
Date
Msg-id 200702122359.l1CNxVU1013061@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #2996: to_char( timestamp, 'DD-Mon-YYYY HH24:MI:SS.MS' ) reports .1000 ms  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      2996
Logged by:          Anthony Taylor
Email address:      tony@tg-embedded.com
PostgreSQL version: 8.1.8
Operating system:   Linux kernel 2.6.11 (based on Gentoo)
Description:        to_char( timestamp, 'DD-Mon-YYYY HH24:MI:SS.MS' )
reports .1000 ms
Details:

When using the "to_char" function to output timestamps, some timestamps
report .1000 milliseconds.

Specifically,

select to_char( time, 'DD-Mon-YYYY HH24:MI:SS.MS' ) from test_time;

Reports:

 12-Feb-2007 18:16:34.999
 12-Feb-2007 18:16:34.1000
 12-Feb-2007 18:16:35.000

I believe the 34.1000 should either be 34.999 or 35.000.

According to the documentation (table 9-21, Template Patterns for Date/Time
Formatting):

MS    millisecond (000-999)

Here's a nice little test script:

-- --------------------------------

CREATE TABLE test_time ( time TIMESTAMP );

CREATE OR REPLACE FUNCTION timetest( )
    RETURNS VOID
    AS $$
BEGIN
    FOR i IN 0..100000 LOOP
        INSERT INTO test_time VALUES ( timeofday()::timestamp );
    END LOOP;
END;
$$ LANGUAGE plpgsql;

SELECT timetest();

select to_char( time, 'DD-Mon-YYYY HH24:MI:SS.MS' ) from test_time;

pgsql-bugs by date:

Previous
From: "Filippo Toso"
Date:
Subject: Re: BUG #2993: The program "postgres" is needed by initdb but was not found ...
Next
From: "Floyd Shackelford"
Date:
Subject: BUG #2997: parse error: setObject("2004-August-15",java.sql.Types.DATE)