Getting current time inside a transaction
This has already been on the lists but i hope it will be useful to somebody who has not time to read all of them. If you are doing stuff inside a transaction you may have noticed that the the results of NOW(), CURRENT_TIMESTAMP etc. will always return the same value, eg.
test=# begin;
BEGIN
test=# select now();
now
-------------------------------
2007-11-02 16:57:38.011621+02
(1 row)
test=# select now();
now
-------------------------------
2007-11-02 16:57:38.011621+02
(1 row)
test=# commit;
COMMIT
The time returned is always the transaction start date (don’t remember exactly though if it was the time of the begin statement or first SQL statement). However this can be overcome, there is a function that for whatever reasons i don’t know/remember and also really don’t care acts differently – it’s called timeofday().
test=# begin;
BEGIN
test=# select timeofday()::timestamptz;
timeofday
-------------------------------
2007-11-02 17:01:15.042648+02
(1 row)
test=# select timeofday()::timestamptz;
timeofday
-------------------------------
2007-11-02 17:01:19.266846+02
(1 row)
test=# commit;
COMMIT
Thanks to Ze / Hannu for pointing this out to me (bow)
About this entry
You’re currently reading “Getting current time inside a transaction,” an entry on <(-_-)> on PostgreSQL
- Published:
- November 2, 2007 / 3:07 pm
- Category:
- postgresql, tips&tricks
- Tags:
2 Comments
Jump to comment form | comment rss [?] | trackback uri [?]