Re: [BUGS] BUG #3431: age() gets the days wrong
От
Tom Lane
Тема
Re: [BUGS] BUG #3431: age() gets the days wrong
Дата
Msg-id
5675.1183931786@sss.pgh.pa.us
Ответ на
Re: [BUGS] BUG #3431: age() gets the days wrong (Pelle Johansson)
Список
Дерево обсуждения
Re: [BUGS] BUG #3431: age() gets the days wrong Tom Lane <tgl@sss.pgh.pa.us>
Re: [BUGS] BUG #3431: age() gets the days wrong Bruce Momjian <bruce@momjian.us>
Re: [BUGS] BUG #3431: age() gets the days wrong Bruce Momjian <bruce@momjian.us>
Re: [BUGS] BUG #3431: age() gets the days wrong Pelle Johansson <pelle@morth.org>
Re: [BUGS] BUG #3431: age() gets the days wrong Tom Lane <tgl@sss.pgh.pa.us>
Pelle Johansson writes: > If you were to use the result for subtracting from the first value, > instead of adding to the second, the conditions are reversed. It's > not really as obvious as I first thought whether there's 2 months and > 29 days or 2 months and 30 days between 2006-11-02 and 2007-02-01... Hmm, that's a really good point; perhaps the original author was thinking of it in those terms, in which case using the first month of the interval is indeed sane. (Almost: I believe that the loop can iterate more than once, and then you need to look to the second month etc. The code's not doing that, so there's still a corner-case bug, plus the fsec issue.) Other than that corner case, it seems the behavior we currently have isif x > y, age() produces a positive interval such that x - age(x, y) = yif x < y, age() produces a negative interval such that y + age(x, y) = x Are we satisfied with just documenting that, or do we want to change it, and if so to what? As the code currently stands, we have the symmetry propertyage(x,y) = - age(y,x) for all x,y. I don't think we can preserve that if we try to simplify the relationship to interval addition/subtraction. Comments? regards, tom lane
В списке pgsql-hackers по дате отправления