Thread: calculating elapsed times between timestamps

calculating elapsed times between timestamps

From
rhubbell
Date:
(posted on novice too, no idea what difference is between lists)

I have been trying to do this and have been unsuccessful so far.

I have a table:

perf:
timestamp   = timestamp with time zone
timeelapsed = numeric
bobble      = text

timeelapsed records are the time elapsed metric in seconds.

e.g. 0.350058078765869

Typical scenario is that I'll have multiple entries where timeelapsed
is greater than some value and will be greater than that value for
some time interval.


I want to find the length of those intervals.

select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
and timeelapsed > 0.4;

The records returned by that query will have an oldest and newest timestamp for
which I would like to calculate the interval.

I found lots of examples of doing arithmetic on timestamps but I never saw
any extracting data from a table.  All the examples I found were using now()
or current_date + 3 or the like.

Do aggregate function work on time data?

Re: calculating elapsed times between timestamps

From
justin
Date:
rhubbell wrote:
> (posted on novice too, no idea what difference is between lists)
>
> I have been trying to do this and have been unsuccessful so far.
>
> I have a table:
>
> perf:
> timestamp   = timestamp with time zone
> timeelapsed = numeric
> bobble      = text
>
> timeelapsed records are the time elapsed metric in seconds.
>
> e.g. 0.350058078765869
>
> Typical scenario is that I'll have multiple entries where timeelapsed
> is greater than some value and will be greater than that value for
> some time interval.
>
>
> I want to find the length of those intervals.
>
> select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
> and timeelapsed > 0.4;
>
> The records returned by that query will have an oldest and newest timestamp for
> which I would like to calculate the interval.
>
I'm not real clear on what you are asking here  with oldest and newest
timestamps and getting the interval, please clarify
> I found lots of examples of doing arithmetic on timestamps but I never saw
> any extracting data from a table.  All the examples I found were using now()
> or current_date + 3 or the like.
>
Just substitute current_date or now() appears in the examples with the
column name
> Do aggregate function work on time data?
>

For date time function go here
http://www.postgresql.org/docs/8.3/static/functions-datetime.html


Re: calculating elapsed times between timestamps

From
rhubbell
Date:
On Mon, 02 Feb 2009 21:36:54 -0500
justin <justin@emproshunts.com> wrote:

> rhubbell wrote:
> > (posted on novice too, no idea what difference is between lists)
> >
> > I have been trying to do this and have been unsuccessful so far.
> >
> > I have a table:
> >
> > perf:
> > timestamp   = timestamp with time zone
> > timeelapsed = numeric
> > bobble      = text
> >
> > timeelapsed records are the time elapsed metric in seconds.
> >
> > e.g. 0.350058078765869
> >
> > Typical scenario is that I'll have multiple entries where timeelapsed
> > is greater than some value and will be greater than that value for
> > some time interval.
> >
> >
> > I want to find the length of those intervals.
> >
> > select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
> > and timeelapsed > 0.4;
> >
> > The records returned by that query will have an oldest and newest timestamp for
> > which I would like to calculate the interval.
> >
> I'm not real clear on what you are asking here  with oldest and newest
> timestamps and getting the interval, please clarify

time a = etime == .211
time b = etime == .312
time c = etime == .311
time d = etime == .301
time e = etime == .201

select returned all etime < .29

I want to know "time d" - "time b"
"time d" == newest
"time b" == oldest


> > I found lots of examples of doing arithmetic on timestamps but I never saw
> > any extracting data from a table.  All the examples I found were using now()
> > or current_date + 3 or the like.
> >
> Just substitute current_date or now() appears in the examples with the
> column name

Ok, will try that.

> > Do aggregate function work on time data?
> >
>
> For date time function go here
> http://www.postgresql.org/docs/8.3/static/functions-datetime.html
>

Re: calculating elapsed times between timestamps

From
rhubbell
Date:
On Mon, 2 Feb 2009 18:53:07 -0800
rhubbell <Rhubbell@iHubbell.com> wrote:

> On Mon, 02 Feb 2009 21:36:54 -0500
> justin <justin@emproshunts.com> wrote:
>
> > rhubbell wrote:
> > > (posted on novice too, no idea what difference is between lists)
> > >
> > > I have been trying to do this and have been unsuccessful so far.
> > >
> > > I have a table:
> > >
> > > perf:
> > > timestamp   = timestamp with time zone
> > > timeelapsed = numeric
> > > bobble      = text
> > >
> > > timeelapsed records are the time elapsed metric in seconds.
> > >
> > > e.g. 0.350058078765869
> > >
> > > Typical scenario is that I'll have multiple entries where timeelapsed
> > > is greater than some value and will be greater than that value for
> > > some time interval.
> > >
> > >
> > > I want to find the length of those intervals.
> > >
> > > select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
> > > and timeelapsed > 0.4;
> > >
> > > The records returned by that query will have an oldest and newest timestamp for
> > > which I would like to calculate the interval.
> > >
> > I'm not real clear on what you are asking here  with oldest and newest
> > timestamps and getting the interval, please clarify
>
> time a = etime == .211
> time b = etime == .312
> time c = etime == .311
> time d = etime == .301
> time e = etime == .201
>
> select returned all etime < .29

Uh, meant etime > .29

>
> I want to know "time d" - "time b"
> "time d" == newest
> "time b" == oldest
>
>
> > > I found lots of examples of doing arithmetic on timestamps but I never saw
> > > any extracting data from a table.  All the examples I found were using now()
> > > or current_date + 3 or the like.
> > >
> > Just substitute current_date or now() appears in the examples with the
> > column name
>
> Ok, will try that.
>
> > > Do aggregate function work on time data?
> > >
> >
> > For date time function go here
> > http://www.postgresql.org/docs/8.3/static/functions-datetime.html
> >
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general

Re: calculating elapsed times between timestamps

From
Scott Marlowe
Date:
On Mon, Feb 2, 2009 at 5:54 PM, rhubbell <Rhubbell@ihubbell.com> wrote:
>
> I want to find the length of those intervals.
>
> select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
> and timeelapsed > 0.4;
>
> The records returned by that query will have an oldest and newest timestamp for
> which I would like to calculate the interval.

The easiest way is to just subtract one timestamp from another...  If
you want the difference in seconds, then use extract

select '2009-01-31 12:34'::timestamp - '2009-01-12 15:34'::timestamp;
     ?column?
------------------
 18 days 21:00:00
select extract(epoch from '2009-01-31 12:34'::timestamp - '2009-01-12
15:34'::timestamp);
 date_part
-----------
   1630800

Does that get you closer to an answer?

Re: calculating elapsed times between timestamps

From
rhubbell
Date:
On Tue, 3 Feb 2009 02:08:54 -0700
Scott Marlowe <scott.marlowe@gmail.com> wrote:

> On Mon, Feb 2, 2009 at 5:54 PM, rhubbell <Rhubbell@ihubbell.com> wrote:
> >
> > I want to find the length of those intervals.
> >
> > select timestamp, timeelapsed, bobble from perf where bobble like "pokerflat"
> > and timeelapsed > 0.4;
> >
> > The records returned by that query will have an oldest and newest timestamp for
> > which I would like to calculate the interval.
>
> The easiest way is to just subtract one timestamp from another...  If
> you want the difference in seconds, then use extract
>
> select '2009-01-31 12:34'::timestamp - '2009-01-12 15:34'::timestamp;
>      ?column?
> ------------------
>  18 days 21:00:00
> select extract(epoch from '2009-01-31 12:34'::timestamp - '2009-01-12
> 15:34'::timestamp);
>  date_part
> -----------
>    1630800
>
> Does that get you closer to an answer?

Yes, thanks. I actually solved in a different way but this helps toward
understanding sql a little better. I think the s in sql is crippling.
I feel like I've traveled back in time whenever I use sql.
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general