You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何在SELECT查询中为所有行添加相同的Unix时间戳?

在PostgreSQL中为所有行添加统一Unix时间戳的方法

核心结论

你提到的now()方法实际是可行的——PostgreSQL里的now()会绑定当前事务的开始时间,同一查询(同一事务)内所有行调用now()都会返回相同值,哪怕处理数百万行耗时数秒,时间戳也不会出现差异。

更稳妥的写法(可选)

如果想更直观地确保时间戳固定,还可以预先计算一次时间戳,再应用到所有行:

  • 用CTE方式:
WITH fixed_ts AS (
    SELECT EXTRACT(EPOCH FROM now()) AS queryId
)
SELECT id, queryId FROM books, fixed_ts;
  • 用子查询方式:
SELECT id, (SELECT EXTRACT(EPOCH FROM now())) AS queryId FROM books;

这两种写法会先计算出唯一的时间戳值,再关联到每一行,彻底消除歧义。

关于“时间戳差异”的说明

如果之前观察到时间戳不一致,大概率是因为多次执行查询(不同事务)导致的,而非同一查询内的行之间出现差异——同一事务内的now()值是绝对固定的。

内容的提问来源于stack exchange,提问作者amhev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:57:02