我的PHP脚本将工作几秒钟,我需要随时从Postgres数据库获取真实的时间戳.但当我从Postgres获取当前的时间戳时,它总是返回相同的值.

下面是我的示例脚本(使用DBAL):

    echo "DB:" . $dbal->fetchColumn("select current_timestamp") . PHP_EOL;
    echo "PHP: " . date("Y-m-d H:i:s") . PHP_EOL;
    sleep(3);

    echo "DB:" . $dbal->fetchColumn("select current_timestamp") . PHP_EOL;
    echo "PHP: " . date("Y-m-d H:i:s") . PHP_EOL;
    sleep(3);

    echo "DB:" . $dbal->fetchColumn("select current_timestamp") . PHP_EOL;
    echo "PHP: " . date("Y-m-d H:i:s") . PHP_EOL;

以下是输出:

DB:2014-05-07 11:59:50.118+04
PHP: 2014-05-07 11:59:50

DB:2014-05-07 11:59:50.118+04
PHP: 2014-05-07 11:59:53

DB:2014-05-07 11:59:50.118+04
PHP: 2014-05-07 11:59:56

Postgres安装在本地计算机上.为什么它总是在同一时间返回?

我使用了now()函数,得到了相同的结果.

推荐答案

TFM开始,我的重点是:

9.9.4. 当前日期/时间

PostgreSQL提供了许多返回相关值的函数

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(precision)
CURRENT_TIMESTAMP(precision)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(precision)
LOCALTIMESTAMP(precision)

...

因为这些函数返回当前的开始时间

PostgreSQL还提供了返回

transaction_timestamp()
statement_timestamp()
clock_timestamp()
timeofday()
now()

transaction_timestamp()相当于CURRENT_TIMESTAMP,但实际上是transaction_timestamp()

Postgresql相关问答推荐

Postgs密码重置问题

为MCV扩展统计设置统计目标

无法将 json 范围读取为 pgtype.Int4range

gitlab在ubuntu上安装duplicate schema问题

连接到 PostgreSQL 时没有属性执行错误

如何在typeorm和嵌套js中将运行时变量设置为postgresql

无法从 docker-compose 上的其他服务解析 postgres 主机名

处理 sqlalchemy 断开连接的更好方法

从左连接更新 Postgres

带有双引号的 postgresql COPY 和 CSV 数据

并发刷新materialized视图

MAC OS X 上的 Postgres 权限被拒绝

Docker - Postgres 和 pgAdmin 4:Connection refused

返回 NULL 的空数组的 array_length()

为什么 PostgreSQL 数组访问在 C 中比在 PL/pgSQL 中快得多?

PostgreSQL 使用 UUID 与文本作为主键

在同一台机器上创建多个 Postgres 实例

处理用户发送的string contains null byte

在 postgres 中导出为 CSV 并使用 GZIP 压缩

基于秒的 Postgresql 日期差异