Обсуждение: now() gives same time within the session

Поиск
Список
Период
Сортировка

now() gives same time within the session

От
Дата:

Hi,

 

I need to log the start and end time of the procedures in a table. But the start and end time are same. This is how I recreated the issue.

 

create table test_time (time timestamp);

delete from  test_time;

insert into test_time select now();

SELECT pg_sleep(10);

insert into test_time select now();

SELECT pg_sleep(10);

insert into test_time select now();

SELECT pg_sleep(10);

insert into test_time select now();

SELECT pg_sleep(10);

select * from test_time;

 

"2010-07-12 12:43:40.509746"

"2010-07-12 12:43:40.509746"

"2010-07-12 12:43:40.509746"

"2010-07-12 12:43:40.509746"

 

Atul Goel

SENIOR DEVELOPER

 

Global DataPoint

Middlesex House, 34-42 Cleveland Street

London W1T 4LB, UK

T: +44 (0)20 7079 4827

M: +44 (0)7846765098

www.globaldatapoint.com

 

This e-mail is confidential and should not be used by anyone who is not the original intended recipient. Global DataPoint Limited does not accept liability for any statements made which are clearly the sender's own and not expressly made on behalf of Global DataPoint Limited. No contracts may be concluded on behalf of Global DataPoint Limited by means of e-mail communication. Global DataPoint Limited Registered in England and Wales with registered number 3739752 Registered Office Middlesex House, 34-42 Cleveland Street, London W1T 4LB

Re: now() gives same time within the session

От
"A. Kretschmer"
Дата:
In response to Atul.Goel@globaldatapoint.com :
> Hi,
>
>
>
> I need to log the start and end time of the procedures in a table. But the
> start and end time are same. This is how I recreated the issue.
>
>
>
> create table test_time (time timestamp);
>
> delete from  test_time;
>
> insert into test_time select now();


Use timeofday() instead, now() returns the transaction starting time.

BEGIN
test=*# select now();
              now
-------------------------------
 2010-07-12 13:13:28.907043+02
(1 row)

test=*# select timeofday();
              timeofday
--------------------------------------
 Mon Jul 12 13:13:36.187703 2010 CEST
(1 row)

test=*# select now();
              now
-------------------------------
 2010-07-12 13:13:28.907043+02
(1 row)

test=*#


Regards, Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431  2EB0 389D 1DC2 3172 0C99

Re: now() gives same time within the session

От
Дата:
Sure thanks a lot.

Regards,
Atul Goel

-----Original Message-----
From: pgsql-performance-owner@postgresql.org [mailto:pgsql-performance-owner@postgresql.org] On Behalf Of A. Kretschmer
Sent: 12 July 2010 12:15
To: pgsql-performance@postgresql.org
Subject: Re: [PERFORM] now() gives same time within the session

In response to Atul.Goel@globaldatapoint.com :
> Hi,
>
>
>
> I need to log the start and end time of the procedures in a table. But the
> start and end time are same. This is how I recreated the issue.
>
>
>
> create table test_time (time timestamp);
>
> delete from  test_time;
>
> insert into test_time select now();


Use timeofday() instead, now() returns the transaction starting time.

BEGIN
test=*# select now();
              now
-------------------------------
 2010-07-12 13:13:28.907043+02
(1 row)

test=*# select timeofday();
              timeofday
--------------------------------------
 Mon Jul 12 13:13:36.187703 2010 CEST
(1 row)

test=*# select now();
              now
-------------------------------
 2010-07-12 13:13:28.907043+02
(1 row)

test=*#


Regards, Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431  2EB0 389D 1DC2 3172 0C99

--
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance
This e-mail is confidential and should not be used by anyone who is not the original intended recipient. Global
DataPointLimited does not accept liability for any statements made which are clearly the sender's own and not expressly
madeon behalf of Global DataPoint Limited. No contracts may be concluded on behalf of Global DataPoint Limited by means
ofe-mail communication. Global DataPoint Limited Registered in England and Wales with registered number 3739752
RegisteredOffice Middlesex House, 34-42 Cleveland Street, London W1T 4LB 

Re: now() gives same time within the session

От
Rob Wultsch
Дата:
On Mon, Jul 12, 2010 at 4:15 AM, A. Kretschmer
<andreas.kretschmer@schollglas.com> wrote:
> In response to Atul.Goel@globaldatapoint.com :
>> Hi,
>>
>>
>>
>> I need to log the start and end time of the procedures in a table. But the
>> start and end time are same. This is how I recreated the issue.
>>
>>
>>
>> create table test_time (time timestamp);
>>
>> delete from  test_time;
>>
>> insert into test_time select now();
>
>
> Use timeofday() instead, now() returns the transaction starting time.


Is this part of the SQL standard?

--
Rob Wultsch
wultsch@gmail.com

Re: now() gives same time within the session

От
Thom Brown
Дата:
On 12 July 2010 14:11, Rob Wultsch <wultsch@gmail.com> wrote:
> On Mon, Jul 12, 2010 at 4:15 AM, A. Kretschmer
> <andreas.kretschmer@schollglas.com> wrote:
>> In response to Atul.Goel@globaldatapoint.com :
>>> Hi,
>>>
>>>
>>>
>>> I need to log the start and end time of the procedures in a table. But the
>>> start and end time are same. This is how I recreated the issue.
>>>
>>>
>>>
>>> create table test_time (time timestamp);
>>>
>>> delete from  test_time;
>>>
>>> insert into test_time select now();
>>
>>
>> Use timeofday() instead, now() returns the transaction starting time.
>
>
> Is this part of the SQL standard?
>

I don't believe it is.  See
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
for more info.

Thom

Re: now() gives same time within the session

От
"A. Kretschmer"
Дата:
In response to Rob Wultsch :
> On Mon, Jul 12, 2010 at 4:15 AM, A. Kretschmer
> <andreas.kretschmer@schollglas.com> wrote:
> > Use timeofday() instead, now() returns the transaction starting time.
>
>
> Is this part of the SQL standard?

Don't know, sorry.


Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431  2EB0 389D 1DC2 3172 0C99

Re: now() gives same time within the session

От
Kenneth Marshall
Дата:
On Mon, Jul 12, 2010 at 06:11:31AM -0700, Rob Wultsch wrote:
> On Mon, Jul 12, 2010 at 4:15 AM, A. Kretschmer
> <andreas.kretschmer@schollglas.com> wrote:
> > In response to Atul.Goel@globaldatapoint.com :
> >> Hi,
> >>
> >>
> >>
> >> I need to log the start and end time of the procedures in a table. But the
> >> start and end time are same. This is how I recreated the issue.
> >>
> >>
> >>
> >> create table test_time (time timestamp);
> >>
> >> delete from ?test_time;
> >>
> >> insert into test_time select now();
> >
> >
> > Use timeofday() instead, now() returns the transaction starting time.
>
>
> Is this part of the SQL standard?
>
No, see section 9.9.4 of the manual.

Cheers,
Ken

Re: now() gives same time within the session

От
Heikki Linnakangas
Дата:
On 12/07/10 14:15, A. Kretschmer wrote:
> Use timeofday() instead, now() returns the transaction starting time.

timeofday() is a legacy function kept only for backwards-compatibility.
It returns a string, which is quite awkward. Use clock_timestamp() instead.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com