Re: querying the age of a row
| От | Sean Davis |
|---|---|
| Тема | Re: querying the age of a row |
| Дата | |
| Msg-id | 46685B4B.50701@mail.nih.gov обсуждение исходный текст |
| Ответ на | Re: querying the age of a row ("Lonni J Friedman" <netllama@gmail.com>) |
| Ответы |
Re: querying the age of a row
|
| Список | pgsql-novice |
Lonni J Friedman wrote: > On 6/7/07, Sean Davis <sdavis2@mail.nih.gov> wrote: >> Lonni J Friedman wrote: >> > On 6/7/07, Sean Davis <sdavis2@mail.nih.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' ; A date it just that, a date. It does not include the time. Try: select last_update, subtest, current_status from cudasmoke where (select now() - interval '24 hours' < date_created::timestamp))='t' ; Sean
В списке pgsql-novice по дате отправления: