Thread: subtracting minutes from date

subtracting minutes from date

From
"Brandon Metcalf"
Date:
What is the best way to store a timestamp if all I need to do is
select rows where this timestamp is less than 60 minutes prior to the
current time?

If I have a column called date with data type timestamp without time
zone I know I can use

  SELECT * FROM table WHERE date < (now()::DATE - 7)::TIMESTAMP;

to select rows where date is older than seven days.  I'm not quite
sure how to interpret now()::DATE::TIMESTAMP since I'm not able to
answer my own question.  I've tried things like:

  SELECT * FROM table WHERE date < now()::DATE::(TIMESTAMP - 60);

but this gives a syntax error.

Thanks.

--
Brandon

Re: subtracting minutes from date

From
"Chandra Sekhar Surapaneni"
Date:
You can just save it as timestamp and try the following query.

select * from table where date < (now() - interval '1 hour');

Regards
Chandra Sekhar Surapaneni

-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of Brandon Metcalf
Sent: Thursday, February 23, 2006 1:56 PM
To: pgsql-general@postgresql.org
Subject: [GENERAL] subtracting minutes from date

What is the best way to store a timestamp if all I need to do is select
rows where this timestamp is less than 60 minutes prior to the current
time?

If I have a column called date with data type timestamp without time
zone I know I can use

  SELECT * FROM table WHERE date < (now()::DATE - 7)::TIMESTAMP;

to select rows where date is older than seven days.  I'm not quite sure
how to interpret now()::DATE::TIMESTAMP since I'm not able to answer my
own question.  I've tried things like:

  SELECT * FROM table WHERE date < now()::DATE::(TIMESTAMP - 60);

but this gives a syntax error.

Thanks.

--
Brandon

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@postgresql.org so that your
       message can get through to the mailing list cleanly



Re: subtracting minutes from date

From
Scott Marlowe
Date:
On Thu, 2006-02-23 at 13:55, Brandon Metcalf wrote:
> What is the best way to store a timestamp if all I need to do is
> select rows where this timestamp is less than 60 minutes prior to the
> current time?
>
> If I have a column called date with data type timestamp without time
> zone I know I can use
>
>   SELECT * FROM table WHERE date < (now()::DATE - 7)::TIMESTAMP;
>
> to select rows where date is older than seven days.  I'm not quite
> sure how to interpret now()::DATE::TIMESTAMP since I'm not able to
> answer my own question.  I've tried things like:
>
>   SELECT * FROM table WHERE date < now()::DATE::(TIMESTAMP - 60);

Tell it you're subracting a minute:

select now() - interval '13 minutes';

That kind of thing

Re: subtracting minutes from date

From
"Brandon Metcalf"
Date:
c == chandu@positivenetworks.net writes:

 c> You can just save it as timestamp and try the following query.

 c> select * from table where date < (now() - interval '1 hour');

Thanks.

--
Brandon

Re: subtracting minutes from date

From
"Brandon Metcalf"
Date:
s == smarlowe@g2switchworks.com writes:

 s> On Thu, 2006-02-23 at 13:55, Brandon Metcalf wrote:
 s> > What is the best way to store a timestamp if all I need to do is
 s> > select rows where this timestamp is less than 60 minutes prior to the
 s> > current time?
 s> >
 s> > If I have a column called date with data type timestamp without time
 s> > zone I know I can use
 s> >
 s> >   SELECT * FROM table WHERE date < (now()::DATE - 7)::TIMESTAMP;
 s> >
 s> > to select rows where date is older than seven days.  I'm not quite
 s> > sure how to interpret now()::DATE::TIMESTAMP since I'm not able to
 s> > answer my own question.  I've tried things like:
 s> >
 s> >   SELECT * FROM table WHERE date < now()::DATE::(TIMESTAMP - 60);

 s> Tell it you're subracting a minute:

 s> select now() - interval '13 minutes';

Thanks.

--
Brandon

Re: subtracting minutes from date

From
"Jim C. Nasby"
Date:
On Thu, Feb 23, 2006 at 03:08:32PM -0600, Scott Marlowe wrote:
> >   SELECT * FROM table WHERE date < now()::DATE::(TIMESTAMP - 60);
>
> Tell it you're subracting a minute:
>
> select now() - interval '13 minutes';

Or, better yet if you're feeding in a variable:

date < now() - ( 13 * '1 minute'::interval )
--
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

Re: subtracting minutes from date

From
Bruno Wolff III
Date:
On Thu, Feb 23, 2006 at 13:55:34 -0600,
  Brandon Metcalf <bmetcalf@nortel.com> wrote:
>
> If I have a column called date with data type timestamp without time
> zone I know I can use
>
>   SELECT * FROM table WHERE date < (now()::DATE - 7)::TIMESTAMP;

You can do this without converting to timestamp:
SELECT * FROM table WHERE date < current_date - 7;