Received: from localhost (unknown [200.46.204.191]) by postgresql.org (Postfix) with ESMTP id 5C6E42E01ED for ; Sun, 27 Jan 2008 22:55:26 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.191]) (amavisd-maia, port 10024) with ESMTP id 62346-04 for ; Sun, 27 Jan 2008 22:55:20 -0400 (AST) Received: from QMTA06.westchester.pa.mail.comcast.net (qmta06.westchester.pa.mail.comcast.net [76.96.62.56]) by postgresql.org (Postfix) with ESMTP id 5840A2E2D73 for ; Sun, 27 Jan 2008 22:55:20 -0400 (AST) Received: from OMTA13.westchester.pa.mail.comcast.net ([76.96.62.52]) by QMTA06.westchester.pa.mail.comcast.net with comcast id iJzf1Y00917dt5G050eg00; Mon, 28 Jan 2008 02:55:18 +0000 Received: from [192.168.0.26] ([24.17.167.182]) by OMTA13.westchester.pa.mail.comcast.net with comcast id iSvG1Y0033wT2q03Z00000; Mon, 28 Jan 2008 02:55:18 +0000 X-Authority-Analysis: v=1.0 c=1 a=KUzmptbThSAA:10 a=7U7KOV5cU7fsgPg49RMA:9 a=K964SFdQcq9LIrkyXtMb7DpIi14A:4 a=si9q_4b84H0A:10 a=LY0hPdMaydYA:10 From: Adrian Klaver To: pgsql-sql@postgresql.org Subject: Re: extract or date_part on an interval? How many e Date: Sun, 27 Jan 2008 18:56:58 -0800 User-Agent: KMail/1.9.1 Cc: Bryce Nesbitt References: <479D3E63.2080601@obviously.com> In-Reply-To: <479D3E63.2080601@obviously.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200801271856.58853.aklaver@comcast.net> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200801/210 X-Sequence-Number: 30063 On Sunday 27 January 2008 6:30 pm, Bryce Nesbitt wrote: > Hmm. Seemed so simple. But how do I get the number of years an > interval represents? extract is clearly the wrong way: > > stage=# select 'now()-'1987-02-01' as interval,extract(year from > now()-'1987-02-01') as age; > interval | age > --------------------------+----- > 7665 days 18:05:51.660345 | 0 > > select EXTRACT(year FROM INTERVAL '7665 days'); gives the same result. > > select EXTRACT(day FROM now()-'1987-02-01')/365 as age; seems messy. > select (now()-'1987-02-01')/365; gives extraneous junk. > > Thanks! SELECT age('1987-02-01'::timestamp); age -------------------------- 20 years 11 mons 26 days (1 row) -- Adrian Klaver aklaver@comcast.net