Обсуждение: age() vs. timestamp substraction

Поиск
Список
Период
Сортировка

age() vs. timestamp substraction

От
Martin Marques
Дата:
I just found this problem with the age() function, which AFAIK should give the same resulte as a subtraction of the
argumentfrom now(), but it doesn't.
 


prueba=> SELECT (now() - tc.last_cron),age(tc.last_cron),tc.intervalo FROM tareas_cron tc ;             ?column?
      |              age              | intervalo
 
-------------------------------------+-------------------------------+-----------@ 1 day 15 hours 13 mins 12.06 secs |
@23 hours 59 mins 58.47 secs | @ 1 day@ 15 hours 13 mins 12.06 secs       | @ 1.52 secs ago               | @ 30 mins@
15hours 13 mins 12.08 secs       | @ 1.50 secs ago               | @ 10 mins
 

prueba=> SELECT version();                                       version
----------------------------------------------------------------------------------------PostgreSQL 8.1.3 on
i486-pc-linux-gnu,compiled by GCC cc (GCC) 4.0.3 (Debian 4.0.3-1)
 

Any ideas on why?

I starting to change my queries so they don't have the age() function anymore.

--
---------------------------------------------------------
Lic. Martín Marqués         |   SELECT 'mmarques' || 
Centro de Telemática        |       '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,    del Litoral             |   Administrador
---------------------------------------------------------




Re: age() vs. timestamp substraction

От
Tom Lane
Дата:
Martin Marques <martin@bugs.unl.edu.ar> writes:
> I just found this problem with the age() function, which AFAIK should
> give the same resulte as a subtraction of the argument from now(),

Where did you get that idea?  age's reference point is current_date (ie,
midnight) not now().  There are also some differences in the calculation
compared to a plain timestamp subtraction.
        regards, tom lane


Re: age() vs. timestamp substraction

От
Martin Marques
Дата:
On Thu, 05 Oct 2006 14:37:24 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Martin Marques <martin@bugs.unl.edu.ar> writes:
>> I just found this problem with the age() function, which AFAIK should
>> give the same resulte as a subtraction of the argument from now(),
> 
> Where did you get that idea?  age's reference point is current_date (ie,
> midnight) not now().  There are also some differences in the calculation
> compared to a plain timestamp subtraction.

Ignore anything I said. Just realized it said current_date. :-(

Sorry.

--
---------------------------------------------------------
Lic. Martín Marqués         |   SELECT 'mmarques' || 
Centro de Telemática        |       '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,    del Litoral             |   Administrador
---------------------------------------------------------




Re: age() vs. timestamp substraction

От
Jean-Paul Argudo
Дата:
Hi all,

> Where did you get that idea?  age's reference point is current_date (ie,
> midnight) not now().  There are also some differences in the calculation
> compared to a plain timestamp subtraction.

I'm jumping on this thread to point out a little strange thing to me.
CURRENT_DATE, converted (stupidly) as a string *with* hour is "current
date at mid-day":


test=# select to_char(current_date,'YYYY-MM-DD HH:MI:SS');      to_char
---------------------2006-10-06 12:00:00
(1 ligne)

It was a day when I had to debug a strange behaviour in a customer's
(bad) code :-)

Cheers,

-- 
Jean-Paul Argudo
www.PostgreSQLFr.org
www.dalibo.com


Re: age() vs. timestamp substraction

От
Stephan Szabo
Дата:
On Fri, 6 Oct 2006, Jean-Paul Argudo wrote:

> Hi all,
>
> > Where did you get that idea?  age's reference point is current_date (ie,
> > midnight) not now().  There are also some differences in the calculation
> > compared to a plain timestamp subtraction.
>
> I'm jumping on this thread to point out a little strange thing to me.
> CURRENT_DATE, converted (stupidly) as a string *with* hour is "current
> date at mid-day":
>
>
> test=# select to_char(current_date,'YYYY-MM-DD HH:MI:SS');
>        to_char
> ---------------------
>  2006-10-06 12:00:00
> (1 ligne)
>
> It was a day when I had to debug a strange behaviour in a customer's
> (bad) code :-)

That's both midnight and mid-day. It's asking for 12 hour time and no
AM/PM marker.