Re: querying the age of a row

From: "Lonni J Friedman" <netllama(at)gmail(dot)com>
To: "Sean Davis" <sdavis2(at)mail(dot)nih(dot)gov>
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: querying the age of a row
Date: 2007-06-07 19:16:38
Message-ID: 7c1574a90706071216tffa6a3dxea98d8402d926c8a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

On 6/7/07, Sean Davis <sdavis2(at)mail(dot)nih(dot)gov> wrote:
> Lonni J Friedman wrote:
> > On 6/7/07, Sean Davis <sdavis2(at)mail(dot)nih(dot)gov> wrote:
> >> Lonni J Friedman wrote:
> >> > Greetings,
> >> > I've got a PostgreSQL-8.1.x database on a Linux box. I have a need to
> >> > determine which rows in a specific table are less than 24 hours old.
> >> > I've tried (and failed) to do this with the age() function. From what
> >> > I can tell, age() only has granularity down to days, and seems to
> >> > assume that anything matching today's date is less than 24 hours old,
> >> > even if there are rows from yesterday's date that existed less than 24
> >> > hours ago.
> >> >
> >> > I've googled on this off and on for a few days, and have come up dry.
> >> > Someone on a different list suggested that I add a column that get
> >> > now() each time a new row is inserted, but that unfortunately won't
> >> > help me for all the pre-existing rows in this database.
> >> >
> >> > At any rate, is there a reliable way of querying a table for rows
> >> > which have existed for a specific period of time?
> >> >
> >>
> >> So your table has no date or time stored in it at all? If not, then you
> >> cannot do the query that you are suggesting.
> >
> > It does have a column that is populated with a date/timestamp from the
> > following query:
> > select to_char(current_timestamp, 'MM-DD-YYYY HH24:MI:SS')
>
> So, the column is a text column? Try these to see if it helps:
>
> select now() - interval '24 hours';
>
> select '06-06-2007 23:22:11'::timestamp - interval '24 hours';
>
> select now() - interval '24 hours' < '06-06-2007 23:22:11'::timestamp;

All 3 of the above queries do work as expected.

Unfortunately, if I port that over to the actual SQL query, i'm back
to square one again, as all the returned rows are all dated after
midnight (even though its only been about 12 hours since midnight
here, and there are definitely rows before midnight which match the
criteria):

select last_update, subtest, current_status from cudasmoke where
(select now() - interval '24 hours' < to_date(date_created,
'MM-DD-YYYY HH24:MI:SS'))='t' ;

The column with the date/time in it is:
date_created | character(20) | not null

thanks for your help so far.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
L. Friedman netllama(at)gmail(dot)com
LlamaLand http://netllama.linux-sxs.org

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Lonni J Friedman 2007-06-07 19:18:18 Re: querying the age of a row
Previous Message Sean Davis 2007-06-07 19:08:26 Re: querying the age of a row