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

基于单调递增id列更新updated_at字段生成递增历史时间序列

为带自增ID的表生成过去的单调递增时间戳

核心思路

利用id列的单调递增特性,基于一个过去的基准时间,给每条记录添加与id正相关的时间偏移量,即可保证updated_at始终单调递增且全部处于过去时间范围内。

方案一:固定间隔递增(简单易控)

选择一个足够早的基准时间,按id添加固定时长的偏移,确保最终时间都在过去:

UPDATE temp1
SET updated_at = '2023-01-01 00:00:00'::timestamp + (id * INTERVAL '5 minutes');

也可以基于当前时间反向计算,确保所有时间都落在过去:

UPDATE temp1
SET updated_at = CURRENT_TIMESTAMP - '365 days'::interval + (id * INTERVAL '1 hour');

方案二:随机间隔递增(贴近真实场景)

如果需要非固定间隔的递增时间戳,可通过累加随机时长的方式,保证每条记录的时间都比前一条晚:

UPDATE temp1 t_target
SET updated_at = (
    SELECT '2023-01-01'::timestamp + SUM(random() * INTERVAL '2 hours')
    FROM temp1 t_source
    WHERE t_source.id <= t_target.id
);

验证结果

执行更新后,查询表数据确认效果:

SELECT * FROM temp1;

示例输出:

id | bar  |         updated_at         
----+------+----------------------------
  1 | val1 | 2023-01-01 00:47:12.345678
  2 | val2 | 2023-01-01 02:15:03.123456
  3 | val3 | 2023-01-01 03:59:45.987654

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:12:27