On Mon, Dec 3, 2012 at 03:05:57AM -0300, Alvaro Herrera wrote: > aanisi...@inbox.ru wrote: > > The following bug has been logged on the website: > > > > Bug reference: 7722 > > Logged by: Artem Anisimov > > Email address: aanisi...@inbox.ru > > PostgreSQL version: 9.2.1 > > Operating system: Slackware Linux 14.0/amd64 > > Description: > > > > The following to queries give the same result (first arguments to age() > > differ in the day number only, second arguments are identical): > > > > select extract(epoch from age('2012-11-23 16:41:31', '2012-10-23 > > 15:56:10')); > > > > and > > > > select extract(epoch from age('2012-11-22 16:41:31', '2012-10-23 > > 15:56:10')); > > alvherre=# select age('2012-11-22 16:41:31', '2012-10-23 15:56:10'); > age > ------------------ > 30 days 00:45:21 > (1 fila) > > alvherre=# select age('2012-11-23 16:41:31', '2012-10-23 15:56:10'); > age > ---------------- > 1 mon 00:45:21 > (1 fila) > > The problem is that age() returns 30 days in one case, and "one month" in the > other; extract() then considers the month as equivalent to 30 days. This is > documented as such, see [1]. > > [1] http://www.postgresql.org/docs/current/static/functions-datetime.html
Wow, that is a weird case. In the first test, we count the number of days because it is less than a full month. In the second case, we call it a full month, but then forget how long it is. Not sure how we could improve this. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs