PostgreSQL技巧 如何获取当前日期时间
postgres=# SELECT timeofday() FROM generate_series(1,10); now() now() 是 PostgreSQL 中与 transaction_timestamp() 等价的一个传统函数,同一个事务中的结果不会改变: postgres=# BEGIN; postgres=# SELECT pg_sleep(3); postgres=# SELECT now(); postgres=# COMMIT; 另外,所有的日期/时间数据类型都支持使用字面值'now'指定当前日期和时间(当前事务开始时间)。因此,以下语句效果相同: SELECT CURRENT_TIMESTAMP; 顺便说一下,PostgreSQL 还提供了其他几个特殊的日期和时间字面值: -- SELECT timestamp 'epoch', timestamp 'today', timestamp 'tomorrow', timestamp 'yesterday', TIME 'allballs'; 以上函数分别返回 UTC 1970 年 1 月 1 日零点、今天午夜、明天午夜、昨天午夜以及 UTC 零点。 延迟执行 以下函数可以用于延迟服务器进行的操作: pg_sleep(seconds) pg_sleep 将当前会话的进行暂停指定的秒数。seconds 的类型为 double precision,所以支持小数秒。我们在面前使用了该函数。 pg_sleep_for 执行一个延迟的时间间隔,通常用于指定一个较大的延迟。 pg_sleep_until 可以用于指定一个进程的唤醒时间。 以下示例分别暂停 1.5 秒、5 分钟以及直到明天 3 点: SELECT pg_sleep(1.5); 暂停时间的精度取决于不同平台的实现,通常可以达到 0.01 秒。延迟效果最少会满足指定的值,但有可能由于其他因素导致更长,例如服务器负载过高。尤其对于 pg_sleep_until,不能保证在完全准确的指定时间唤醒进程,但是也不会提前唤醒。 注意:使用这些延迟函数时,确保当前会话没有锁定过多的资源;否则,其他会话将会一直等待,导致系统性能的下降。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |