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

PostgreSQL如何为已有的timestamp时间戳设置指定时间值

解决方案

你可以直接使用如下UPDATE语句完成现有数据的批量修改,完整代码如下:

ALTER TABLE members ALTER COLUMN joined SET DATA TYPE timestamp;
ALTER TABLE members ALTER COLUMN joined SET DEFAULT current_timestamp;

-- 将所有现有行的joined字段时间设置为对应日期的09:00:00
UPDATE members 
SET joined = joined::DATE + INTERVAL '9 hours';

如果需要避免误改后续已经插入、时间不为0点的行,可以添加过滤条件,仅修改从date类型转换过来的原始数据:

UPDATE members 
SET joined = joined::DATE + INTERVAL '9 hours'
WHERE joined::TIME = '00:00:00'::TIME;

逻辑说明

  • joined::DATE 会将timestamp类型的joined字段转换为纯日期类型,自动丢弃时间部分,拿到原始的日期值
  • 拼接INTERVAL '9 hours' 即可得到对应日期09:00:00的timestamp格式数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:04