On Sat, Oct 10, 2015 at 3:01 AM, John Pruitt <jpruitt@doozer.com> wrote:
> On further inspection, an age function that explicitly takes timestamptz
> arguments does in fact exist.
>
> select ns.nspname || '.' || proname || '(' || oidvectortypes(proargtypes)
||
> ')'
> from pg_proc
> inner join pg_namespace ns on (pg_proc.pronamespace = ns.oid)
> where proname = 'age'
> ;
>
> pg_catalog.age(xid)
> pg_catalog.age(timestamp without time zone)
> pg_catalog.age(timestamp with time zone)
> pg_catalog.age(timestamp without time zone, timestamp without time zone)
> pg_catalog.age(timestamp with time zone, timestamp with time zone)
>
> Shouldn't the versions that take timestamp with time zone honor the time
> zone?
Thanks for providing more details and your analysis.
But in function timestamptz_age which accepts timestamptz as arguments has
the following comment in the code.
/*
* Note: we deliberately ignore any difference between tz1 and tz2.
*/
The following mail provides the details of timezone ignorance in age
function.
http://www.postgresql.org/message-id/8907.1101918113@sss.pgh.pa.us
Because of this reason, the age function works similar to timestamp even
if the given input is timestamptz.
Regards,
Hari Babu
Fujitsu Australia