Unix Technical Forum

Re: timestamp format bug

This is a discussion on Re: timestamp format bug within the pgsql Hackers forums, part of the PostgreSQL category; --> > -----Original Message----- > From: Kevin Grittner [mailto:Kevin.Grittner@wicourts.gov] > Sent: Thursday, January 31, 2008 9:48 AM > To: Roberts, ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Hackers

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-15-2008, 10:42 PM
Roberts, Jon
 
Posts: n/a
Default Re: timestamp format bug

> -----Original Message-----
> From: Kevin Grittner [mailto:Kevin.Grittner@wicourts.gov]
> Sent: Thursday, January 31, 2008 9:48 AM
> To: Roberts, Jon; pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] timestamp format bug
>
> >>> On Thu, Jan 31, 2008 at 9:34 AM, in message

> <1A6E6D554222284AB25ABE3229A92762715521@nrtexcus70 2.int.asurion.com>,
> "Roberts,
> Jon" <Jon.Roberts@asurion.com> wrote:
> > select to_char(date, 'yyyy-mm-dd hh24:mi:ss.ms') as char,
> > date
> > from (select timestamp'2008-01-30 15:06:21.560' as date) sub
> >
> > "2008-01-30 15:06:21.560";"2008-01-30 15:06:21.56"
> >
> > These two fields should be consistent because they should be formatted
> > the same way.

>
> Why would you think that?
>
> I would expect the timestamp to be presented with one to nine
> digits to the right of the decimal point, depending on the value.


I expect the query to return either:
"2008-01-30 15:06:21.560";"2008-01-30 15:06:21.560"

or:
"2008-01-30 15:06:21.56";"2008-01-30 15:06:21.56"

The default timestamp format appears to be yyyy-mm-dd hh24:mi:ss.ms but it
doesn't follow this for milliseconds. It truncates the trailing zero for
timestamps and it does not truncate the trailing zero when cast as a
character.

I don't care which standard should be adopted but it should be the same.

>
> I can think of a couple database products which only go to three
> decimal positions, and always show three, but that's hardly a
> standard.



Oracle and MS SQL Server are consistent in this.



Jon

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-15-2008, 10:42 PM
Kevin Grittner
 
Posts: n/a
Default Re: timestamp format bug

>>> On Thu, Jan 31, 2008 at 12:28 PM, in message
<1A6E6D554222284AB25ABE3229A92762715525@nrtexcus70 2.int.asurion.com>, "Roberts,
Jon" <Jon.Roberts@asurion.com> wrote:
> The default timestamp format appears to be yyyy-mm-dd hh24:mi:ss.ms


Not to me:

select now();
now
-------------------------------
2008-01-31 12:31:40.568746-06
(1 row)



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-15-2008, 10:42 PM
Roberts, Jon
 
Posts: n/a
Default Re: timestamp format bug

> -----Original Message-----
> From: Kevin Grittner [mailto:Kevin.Grittner@wicourts.gov]
> Sent: Thursday, January 31, 2008 12:33 PM
> To: Roberts, Jon; pgsql-hackers@postgresql.org
> Subject: RE: [HACKERS] timestamp format bug
>
> >>> On Thu, Jan 31, 2008 at 12:28 PM, in message

> <1A6E6D554222284AB25ABE3229A92762715525@nrtexcus70 2.int.asurion.com>,
> "Roberts,
> Jon" <Jon.Roberts@asurion.com> wrote:
> > The default timestamp format appears to be yyyy-mm-dd hh24:mi:ss.ms

>
> Not to me:
>
> select now();
> now
> -------------------------------
> 2008-01-31 12:31:40.568746-06
> (1 row)
>


I'm guessing that is a server setting on how to format a timestamp.
Your appears to be yyyy-mm-dd hh24:mi:ss.us.


So on your db, run this query:
select sub.t1, to_char(t1, 'yyyy-mm-dd hh24:mi:ss.us') as char_t1
from
(
select timestamp'2008-01-31 12:31:40.500000' as t1
) sub


I bet you get this:
"2008-01-31 12:31:40.50";"2008-01-31 12:31:40.500000"

Don't you think it should have two identical columns?

Secondly, this link shows that ms should be 000-999 and us should be
000000-999999.

http://www.postgresql.org/docs/8.2/s...ormatting.html


All of the other fields are padded like month, day, year, hour, minute,
and second and are consistent. The formats ms and us should be
consistent too.



Jon

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-15-2008, 10:42 PM
Kevin Grittner
 
Posts: n/a
Default Re: timestamp format bug

>>> On Thu, Jan 31, 2008 at 12:45 PM, in message
<1A6E6D554222284AB25ABE3229A92762715527@nrtexcus70 2.int.asurion.com>, "Roberts,
Jon" <Jon.Roberts@asurion.com> wrote:

> So on your db, run this query:
> select sub.t1, to_char(t1, 'yyyy-mm-dd hh24:mi:ss.us') as char_t1
> from
> (
> select timestamp'2008-01-31 12:31:40.500000' as t1
> ) sub
>
>
> I bet you get this:
> "2008-01-31 12:31:40.50";"2008-01-31 12:31:40.500000"


t1 | char_t1
------------------------+----------------------------
2008-01-31 12:31:40.50 | 2008-01-31 12:31:40.500000
(1 row)

> Don't you think it should have two identical columns?


No. Why should the return value of a function influence the input?

What would you expect from this query?:

select sub.t1, substring(sub.t1 from 2 for 3) as substring_t1
from
(
select 'abcde'::text as t1
) sub

> Secondly, this link shows that ms should be 000-999 and us should be
> 000000-999999.


Yes. That seems to me to work fine, as your examples show.

-Kevin




---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 04-15-2008, 10:42 PM
Roberts, Jon
 
Posts: n/a
Default Re: timestamp format bug

> -----Original Message-----
> From: Kevin Grittner [mailto:Kevin.Grittner@wicourts.gov]
> Sent: Thursday, January 31, 2008 1:47 PM
> To: Roberts, Jon; pgsql-hackers@postgresql.org
> Subject: RE: [HACKERS] timestamp format bug
>
> >>> On Thu, Jan 31, 2008 at 12:45 PM, in message

> <1A6E6D554222284AB25ABE3229A92762715527@nrtexcus70 2.int.asurion.com>,
> "Roberts,
> Jon" <Jon.Roberts@asurion.com> wrote:
>
> > So on your db, run this query:
> > select sub.t1, to_char(t1, 'yyyy-mm-dd hh24:mi:ss.us') as char_t1
> > from
> > (
> > select timestamp'2008-01-31 12:31:40.500000' as t1
> > ) sub
> >
> >
> > I bet you get this:
> > "2008-01-31 12:31:40.50";"2008-01-31 12:31:40.500000"

>
> t1 | char_t1
> ------------------------+----------------------------
> 2008-01-31 12:31:40.50 | 2008-01-31 12:31:40.500000
> (1 row)
>
> > Don't you think it should have two identical columns?

>
> No. Why should the return value of a function influence the input?
>



This is clearly a bug. Don't fix it. I don't care.


Jon


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 09:40 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com