2013/7/3 Tom Lane <t...@sss.pgh.pa.us>: > Alvaro Herrera <alvhe...@2ndquadrant.com> writes: >> Peter Eisentraut escribió: >>> On 7/1/13 3:47 AM, Pavel Stehule wrote: >>>> CREATE OR REPLACE FUNCTION construct_time(hour int DEFAULT 0, mi int >>>> DEFAULT 0, sec int DEFAULT 0, ms float DEFAULT 0.0); >>> >>> If we are using integer datetime storage, we shouldn't use floats to >>> construct them. > >> I think this is wrong. Datetime storage may be int, but since they're >> microseconds underneath, we'd be unable to specify a full-resolution >> timestamp if we didn't have float ms or integer ľs. So either the >> seconds argument should allow fractions (probably not a good idea), or >> we should have another integer argument for microseconds (not >> milliseconds as the above signature implies). > > FWIW, I'd vote for allowing the seconds to be fractional. That's the > way the user perceives things: > > regression=# select '12:34:56.789'::time; > time > -------------- > 12:34:56.789 > (1 row) > > Moreover, an integer microseconds argument would be a shortsighted idea > because it wires the precision limit into the function API. As long as > we make the seconds argument be float8, it will work fine even when the > underlying precision switches to, say, nanoseconds. > > And lastly, those default arguments are a bad idea as well. There's no > reasonable use-case for make_time(12); that's almost certainly an error. > Even more so for make_time(). While you could make some case for > make_time(12,34) being useful, I don't think it buys much compared > to writing out make_time(12,34,0), and having just one function > signature is that much less cognitive load on users. >
I had a plan use DEFAULT only for usec parameter (if it was used). Seconds was mandatory parameter. After tests on prototype I think so fractional sec is better. Separate value (in usec) is really big number - not practical for hand writing > So my vote is for make_time(hour int, min int, sec float8). +1 Pavel > > regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers