Thread: Number of months
Is there a function that will give me the number of months, as an integer, in Pg 7.4.x? I found the date_trunc function but that will return text and I didn't see anything else?
I have this, but didn't want to duplicate the work if it wasn't necessary:
(date_part('Year', CURRENT_DATE) -date_part('Year', SOMEDATE)) * 12 +date_part('Month', CURRENT_DATE)-date_part('Month',SOMEDATE)
TIA
Patrick Hatcher
You could create your own function for the conversion, something like:
CREATE OR REPLACE FUNCTION interval2Months(INTERVAL) RETURNS INTEGER LANGUAGE 'sql' IMMUTABLE AS '
SELECT CAST(extract(YEAR FROM $1) * 12 + extract (MONTH FROM $1) AS INTEGER);
';
you call it doing SELECT interval2Months(age('2003-01-01'::date));
Of course, you can create a function that obtains the age directly from a DATE parameter and then converts that value to months.
Hope it helps.
On Wed, 2004-11-03 at 15:52, Patrick Hatcher wrote:
CREATE OR REPLACE FUNCTION interval2Months(INTERVAL) RETURNS INTEGER LANGUAGE 'sql' IMMUTABLE AS '
SELECT CAST(extract(YEAR FROM $1) * 12 + extract (MONTH FROM $1) AS INTEGER);
';
you call it doing SELECT interval2Months(age('2003-01-01'::date));
Of course, you can create a function that obtains the age directly from a DATE parameter and then converts that value to months.
Hope it helps.
On Wed, 2004-11-03 at 15:52, Patrick Hatcher wrote:
Is there a function that will give me the number of months, as an integer, in Pg 7.4.x? I found the date_trunc function but that will return text and I didn't see anything else?
I have this, but didn't want to duplicate the work if it wasn't necessary:
(date_part('Year', CURRENT_DATE) -date_part('Year', SOMEDATE)) * 12 +date_part('Month', CURRENT_DATE)-date_part('Month',SOMEDATE)
TIA
Patrick Hatcher