Thread: BUG #2198: Now returns always same date and time during a session

BUG #2198: Now returns always same date and time during a session

From
"Jacques Gollion"
Date:
The following bug has been logged online:

Bug reference:      2198
Logged by:          Jacques Gollion
Email address:      jgollion@sambatechnologies.com
PostgreSQL version: 8.1.2
Operating system:   Windows 2000
Description:        Now returns always same date and time during a session
Details:

The following functions returns the first time the right date and time but
when called at several date and time returns the date that was returned at
the first call. To get again the right date, it is necessary do disconnect
and reconnect.

===================================================
CREATE OR REPLACE FUNCTION getserverdate(szdatetime_p "varchar")
  RETURNS "varchar" AS
$BODY$
DECLARE  tNow_l timestamp ;
DECLARE  szdatetime_l VARCHAR(128);

begin
  szdatetime_l := '-1';
  tNow_l := Now();
  RAISE LOG '  tNow_l  = %', tNow_l;
  szdatetime_l := TO_CHAR(tNow_l,'YYYYMMDDHH24MISS');
   RAISE LOG '  szdatetime_l  = %', szdatetime_l;
 return szdatetime_l;

END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION getserverdate(szdatetime_p "varchar") OWNER TO postgres;
GRANT EXECUTE ON FUNCTION getserverdate(szdatetime_p "varchar") TO public;
GRANT EXECUTE ON FUNCTION getserverdate(szdatetime_p "varchar") TO
postgres;
GRANT EXECUTE ON FUNCTION getserverdate(szdatetime_p "varchar") TO client;
GRANT EXECUTE ON FUNCTION getserverdate(szdatetime_p "varchar") TO batch;

Re: BUG #2198: Now returns always same date and time during a session

From
Tom Lane
Date:
"Jacques Gollion" <jgollion@sambatechnologies.com> writes:
> The following functions returns the first time the right date and time but
> when called at several date and time returns the date that was returned at
> the first call.

Please read
http://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

> To get again the right date, it is necessary do disconnect and reconnect.

A fresh transaction is sufficient.

            regards, tom lane

Re: BUG #2198: Now returns always same date and time during a session

From
Michael Fuhr
Date:
On Mon, Jan 23, 2006 at 11:40:43AM +0000, Jacques Gollion wrote:
> The following functions returns the first time the right date and time but
> when called at several date and time returns the date that was returned at
> the first call.

See "Current Date/Time" in the documentation:

http://www.postgresql.org/docs/8.1/interactive/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

"It is important to know that CURRENT_TIMESTAMP and related functions
return the start time of the current transaction; their values do
not change during the transaction.  This is considered a feature:
the intent is to allow a single transaction to have a consistent
notion of the 'current' time, so that multiple modifications within
the same transaction bear the same time stamp."

"There is also the function timeofday() which returns the wall-clock
time and advances during transactions."

> To get again the right date, it is necessary do disconnect and reconnect.

Do you have autocommit disabled?  I'd guess all of your function
calls are happening in the same transaction.  You shouldn't have
to reconnect; starting a new transaction should work.

--
Michael Fuhr