Psqlgresql Time function时间函数

Psqlgresql Time function时间函数

select now() 获取的时间为什么一直不变?

pg中获取时间的方式有多种

如果放在事务中,now()获取的就是事务开始的时间,事务不结束,时间不变;而clock_timestamp()显示的时间会实时变化。获取时间行数参考如下:

now()
timestamp with time zone
Current date and time (start of current transaction); see Section 9.9.4

current_timestamp
timestamp with time zone
Current date and time (start of current transaction); see Section 9.9.4

current_time
time with time zone
Current time of day; see Section 9.9.4

clock_timestamp()
timestamp with time zone
Current date and time (changes during statement execution); see Section 9.9.4

eg:

postgres=# begin;
BEGIN
postgres=# select now();
              now              
-------------------------------
 2019-04-15 16:05:23.491101+08
(1 row)

postgres=# select now();
              now              
-------------------------------
 2019-04-15 16:05:23.491101+08
(1 row)

postgres=# end;
COMMIT
postgres=#


postgres=# begin;
BEGIN
postgres=# select clock_timestamp();
        clock_timestamp        
-------------------------------
 2019-04-15 16:04:20.491936+08
(1 row)
postgres=# select clock_timestamp();
        clock_timestamp        
-------------------------------
 2019-04-15 16:05:01.330757+08
(1 row)
postgres=# end;
COMMIT

reference

https://www.postgresql.org/docs/10/functions-datetime.html

上一篇:Postgresql数据库体系结构-进程和内存结构


下一篇:Postgresql pg_dump&pg_restore用法