Thread: Date comparison question

Date comparison question

From
"Jan Bodey"
Date:
Hi

I require a query that will see if a stored date is more than a certain 
interval before the current date.  Using an interval of 10 hours, the query 
would be something like:

SELECT * FROM utable
WHERE now() - utimestamp > interval '10 hours';

The problem I am having is that the interval is not fixed, and I would like 
to be able to store it as a value in a database table.  The unit of the 
interval can, however, be fixed, and will almost certainly be fixed to 
hours.

I have not been able to find a way of doing what I require, does anybody 
have any ideas to what I need to do?

Cheers.

Jan.

_________________________________________________________________
Tired of 56k? Get a FREE BT Broadband connection 
http://www.msn.co.uk/specials/btbroadband



Re: Date comparison question

From
Stephan Szabo
Date:
On Tue, 20 May 2003, Jan Bodey wrote:

> Hi
>
> I require a query that will see if a stored date is more than a certain
> interval before the current date.  Using an interval of 10 hours, the query
> would be something like:
>
> SELECT * FROM utable
> WHERE now() - utimestamp > interval '10 hours';
>
> The problem I am having is that the interval is not fixed, and I would like
> to be able to store it as a value in a database table.  The unit of the
> interval can, however, be fixed, and will almost certainly be fixed to
> hours.
>
> I have not been able to find a way of doing what I require, does anybody
> have any ideas to what I need to do?

If you assume that you're just going to stick one row in the interval
table, I think you can do something kinda like:
create table interv(i interval);insert into interv values ('10 hours');analyze interv;select utable.* from utable,
intervwhere now()-utimestamp>i;
 

This could be made more complicated if you want to have multiple interval
values, etc.  Also, neither of the above is probably terribly fast if
utable is big.



Re: Date comparison question

From
Tom Lane
Date:
"Jan Bodey" <jan_bodey@hotmail.com> writes:
> SELECT * FROM utable
> WHERE now() - utimestamp > interval '10 hours';

> The problem I am having is that the interval is not fixed, and I would like 
> to be able to store it as a value in a database table.  The unit of the 
> interval can, however, be fixed, and will almost certainly be fixed to 
> hours.

Do you not want to store the values as type interval?  That would seem
like the most straightforward answer.  If you really want to store them
as plain numbers, there's a float-times-interval operator, so you could
do something like... > table.float8col * interval '1 hour';
        regards, tom lane


Re: Date comparison question

From
"Jan Bodey"
Date:
The problem I have with having the values as type interval, is that I am 
restricted by using Torque.  I can't work out what Torque type (if any!) 
maps to Interval!  Your 'float-times-interval' operator may well get me 
around that though, although I will not test until tomorrow, high time I 
left the office!!

Cheers

Jan.

>
>"Jan Bodey" <jan_bodey@hotmail.com> writes:
> > SELECT * FROM utable
> > WHERE now() - utimestamp > interval '10 hours';
>
> > The problem I am having is that the interval is not fixed, and I would 
>like
> > to be able to store it as a value in a database table.  The unit of the
> > interval can, however, be fixed, and will almost certainly be fixed to
> > hours.
>
>Do you not want to store the values as type interval?  That would seem
>like the most straightforward answer.  If you really want to store them
>as plain numbers, there's a float-times-interval operator, so you could
>do something like
>    ... > table.float8col * interval '1 hour';
>
>            regards, tom lane

_________________________________________________________________
Express yourself with cool emoticons - download MSN Messenger today! 
http://www.msn.co.uk/messenger