Mark Dilger wrote:
> Your proposal is that justify_hours borrows 24 hours from the days column in
> order to bring the -12 hours up to a positive 12 hours. Should it only do that
> if the days column is a positive number? What if it is negative?
>
> I think we all agree on the following but nobody is explicitly saying so:
>
> select justify_days(justify_hours('2 days -12:00:00'::interval))
> justify_days
> -------------------------
> 1 day 12:00:00
Right.
> select justify_days(justify_hours('-2 days -12:00:00'::interval))
> justify_days
> -------------------------
> -2 days -12:00:00
Right, unchanged.
> Am I correct that the second case should still have negative hours? If so, then
> justify_hours(...) needs to examine the sign of the days and months portion of
> the interval while performing its work.
Yes, it would need to look at both, and this opens a new problem.
Imagine this:
'1 mons -2 days -12:00:00'
Which sign do we head to for this? For justify_hours, if we don't look
at the months it remains unchange, but calling justify_days we get:
'28 days -12:00:00'
which is wrong (negative and positive). Now if we knew justify_days was
going to be called we would have had justify_hours return '-3 days
12:00:00' so the final result after calling justify_days would be '27
days 12:00:00'.
My head hurts.
-- Bruce Momjian http://candle.pha.pa.us SRA OSS, Inc. http://www.sraoss.com
+ If your life is a hard drive, Christ can be your backup. +