Re: text -> time cast problem - Mailing list pgsql-hackers

From Brent Verner
Subject Re: text -> time cast problem
Date
Msg-id 20011206164449.GA13858@rcfile.org
Whole thread Raw
In response to Re: text -> time cast problem  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: text -> time cast problem  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
[2001-12-04 18:15] Tom Lane said:
| Peter Eisentraut <peter_e@gmx.net> writes:
| > That appears to be what it does, but it's not correct.  I point you to
| > SQL92:
| 
| >          16)The data type of a <time literal> that does not specify <time
| >             zone interval> is TIME(P), where P is the number of digits in
| >             <seconds fraction>, if specified, and 0 otherwise. The data
| >             type of a <time literal> that specifies <time zone interval>
| >             is TIME(P) WITH TIME ZONE, where P is the number of digits in
| >             <seconds fraction>, if specified, and 0 otherwise.
| 
| > In this "time literal" context, TIME does not take a precision value at
| > all.  The new code certainly has this wrong.

The current handling of <time literal> and <timestamp literal> appear 
to be correct from my reading of the sql standards.

| But you are definitely right that
| 
|         time '17:12:28.123'

sql-99 seems to contradict this assertion.
page 160 (Syntax Rules, 6.1 <data type>)  30) If <time precision> is not specified, then 0 (zero) is implicit.     If
<timestampprecision> is not specified, then 6 is implicit.
 

meaning (to me) that "TIME" should be equivalent "TIME(0)".
 [snip]

| in general we'd like TYPE 'LIT' and 'LIT'::TYPE to
| produce the same answers.

I agree wholly with this statement.
 [snip]

To get back to my original problem report... 
 I believe the proper solution would be to update the documentation 
to reflect the fact that "TIME 'hh:mm:ss.ff'" will correctly drop 
the '.ff' seconds fraction.
 That said, how should "time"('hh:mm:ss.ff') behave?  How could
<time precision> be specified in this syntax?  If there is no way
to specify <time precision>, I believe we should drop the seconds
fraction from <time string>.  Is there any reason we couldn't drop
this typename-as-a-function-call syntax for types like "time" and
"timestamp"?

cheers. brent

p.s. sorry for not replying sooner...

-- 
"Develop your talent, man, and leave the world something. Records are 
really gifts from people. To think that an artist would love you enough
to share his music with anyone is a beautiful thing."  -- Duane Allman


pgsql-hackers by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: pg_dump: Sorted output, referential integrity statements
Next
From: Peter Eisentraut
Date:
Subject: Re: date formatting and tab-complete patch