PostgreSQL技巧 如何获取当前日期时间
副标题[/!--empirenews.page--]
短视频,自媒体,达人种草一站服务 这篇文章主要介绍了PostgreSQL 如何获取当前日期时间及注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 在开发数据库应用或者调试代码时,经常需要获取系统的当前日期和时间,我们来看一下 PostgreSQL 中提供的相关函数。 当前日期 CURRENT_DATE CURRENT_DATE 函数用于获取数据库服务器的当前日期: postgres=# SELECT CURRENT_DATE; 调用该函数时不需要在函数名后加括号。该日期是服务器的日期,不是客户端的日期。 当前事务开始时间 以下函数可以用于获取数据库服务器的当前时间: CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME、LOCALTIME、CURRENT_TIMESTAMP、LOCALTIMESTAMP 前面 4 个函数用于获取时间,后面 4 个函数用于获取时间戳;CURRENT_TIME 和 CURRENT_TIMESTAMP 包含时区信息,LOCALTIME 和 LOCALTIMESTAMP 不包含时区信息。precision 用于指定小数秒的位数,取值为 0 - 6,默认为 6。 postgres=# SELECT CURRENT_TIME, LOCALTIME, CURRENT_TIMESTAMP, LOCALTIMESTAMP; postgres=# SELECT CURRENT_TIME(3), LOCALTIME(3), CURRENT_TIMESTAMP(3), LOCALTIMESTAMP(3); 注意: 上面所有的函数,包括 CURRENT_DATE,返回的都是当前事务开始的时间。在同一个事务期间,多次调用相同的函数将会返回相同的值,结果不会随着时间增加。这一点与其他数据库的实现可能不同。 以下示例使用 pg_sleep 函数暂停 3 秒再次获取当前时间: postgres=# BEGIN; postgres=# SELECT pg_sleep(3); postgres=# SELECT CURRENT_TIMESTAMP; postgres=# COMMIT; 在事务中两次获取的时间相同。 当前语句开始时间 PostgreSQL 还提供了其他获取时间的函数: transaction_timestamp() transaction_timestamp() transaction_timestamp() 等价于 CURRENT_TIMESTAMP,但是作用更加明确。 statement_timestamp() statement_timestamp() 返回当前语句的开始时间,更准确地说,应该是接收到客户端最新命令的时间。statement_timestamp() 和 transaction_timestamp() 对于事务中的第一个命令返回的结果相同,但随后再执行 statement_timestamp() 将会返回不同的值。 postgres=# BEGIN; postgres=# SELECT pg_sleep(3); postgres=# SELECT statement_timestamp(); postgres=# COMMIT; 两次执行结果之间相差了 3 秒左右。 当我们在存储过程(Stored Procedure)中进行调试时,通常需要打印不同语句消耗的时间;此时就需要使用 statement_timestamp(),而不能使用 CURRENT_TIMESTAMP 或者 transaction_timestamp(): CREATE OR REPLACE sp_test clock_timestamp() clock_timestamp() 返回当前实际的时间,即使在同一个 SQL 语句中也可能返回不同的值: postgres=# SELECT clock_timestamp() FROM generate_series(1,10); 查询语句在 1 秒钟内返回了 10 条记录,但是每条记录产生的时间都不相同。 timeofday() (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |