Search Postgresql Archives

Re: Can't EXTRACT number of months from an INTERVAL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Jun 30, 2010, at 18:45 , Eliot, Christopher wrote:

> I need to read a timestamp from the database and turn that into an integer describing how many months ago the event happened, rounding downward.  The events are guaranteed to be in the past.

=# select timestamp '2010-06-26 00:00:00' - timestamp  '2008-11-07 00:00:00';
 ?column? 
----------
 596 days
(1 row)

=# select justify_interval(timestamp '2010-06-26 00:00:00' - timestamp  '2008-11-07 00:00:00');
   justify_interval    
-----------------------
 1 year 7 mons 26 days
(1 row)

=# select extract('months' from justify_interval(timestamp '2010-06-26 00:00:00' - timestamp  '2008-11-07 00:00:00'));
 date_part 
-----------
         7
(1 row)

This is likely not what you want: you're probably looking for 19.

One way would be:

=# select 12 * extract('years' from a.i) + extract('months' from a.i) 
  from (values (justify_interval(timestamp '2010-06-26 00:00:00' - timestamp  '2008-11-07 00:00:00'))) as a (i);
 ?column? 
----------
       19
(1 row)

If you're willing to make the assumption that each month has 30 days:

=# select cast(extract('days' from timestamp '2010-06-26 00:00:00' - timestamp  '2008-11-07 00:00:00') as int) / 30;
 ?column? 
----------
       19
(1 row)

And you're dealing only with dates):

=# select (cast('2010-06-26' as date) - cast('2008-11-07' as date)) / 30;
 ?column? 
----------
       19
(1 row)

Datetime math can be difficult as it can be very contextual.

Michael Glaesemann
grzm seespotcode net


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux