Как получить реальное время внутри транзакции PostgreSQL? - PullRequest
19 голосов
/ 29 июля 2010

Насколько я понимаю, now () возвращает одно и то же время в течение всей транзакции PostgreSQL?Но как получить реальное время?

Кроме того, мне интересно, есть ли какой-либо параметр конфигурации для ограничения продолжительности транзакции, чтобы после истечения этого периода транзакция истечения срока действия немедленно завершалась неудачей или каким-либо другим образом запрещала бы следующуюзапросы?

Ответы [ 3 ]

45 голосов
/ 11 июня 2014

Использование clock_timestamp().

now() - это традиционный PostgreSQL, эквивалентный transaction_timestamp(), что эквивалентно CURRENT_TIMESTAMP.Эти функции возвращают время начала текущей транзакции.Их значения не изменяются во время транзакции.

statement_timestamp() возвращает время получения последнего командного сообщения от клиента.

clock_timestamp() возвращает фактическое текущее время, и, следовательно, егозначение изменяется даже в пределах одной команды SQL.

Для получения дополнительной информации см. документацию .

4 голосов
/ 29 июля 2010
Timeofday()

Может работать на вас.

0 голосов
/ 12 августа 2010

Чтобы ограничить время выписки (не транзакции), вы можете использовать Statement_timeout.now () будет увеличиваться при каждом выполнении , если не в блоке транзакции.Таким образом:

postgres=# select now();
              now              
-------------------------------
 2010-08-11 13:44:36.207614-07
(1 row)

postgres=# select now();
              now              
-------------------------------
 2010-08-11 13:44:36.688054-07
(1 row)

postgres=# select now();
              now              
-------------------------------
 2010-08-11 13:44:40.407623-07
(1 row)

postgres=# begin;
BEGIN
postgres=# select now();
              now              
-------------------------------
 2010-08-11 13:44:43.417611-07
(1 row)

postgres=# select now();
              now              
-------------------------------
 2010-08-11 13:44:43.417611-07
(1 row)

postgres=# 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...