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

如何将含UTC_TIMESTAMP()、DATE_ADD()的MySQL查询转换为PostgreSQL?

MySQL插入语句转PostgreSQL的解决方案

转换后的PostgreSQL插入查询

INSERT INTO snippets (title, content, created, expires)
VALUES(?, ?, CURRENT_TIMESTAMP AT TIME ZONE 'UTC', CURRENT_TIMESTAMP AT TIME ZONE 'UTC' + INTERVAL '1 day' * ?);

或者更直观的函数式写法:

INSERT INTO snippets (title, content, created, expires)
VALUES(?, ?, CURRENT_TIMESTAMP AT TIME ZONE 'UTC', CURRENT_TIMESTAMP AT TIME ZONE 'UTC' + make_interval(days => ?));

关键函数替换说明

  • 替代MySQL的UTC_TIMESTAMP():使用CURRENT_TIMESTAMP AT TIME ZONE 'UTC',它返回当前UTC时间,且会转换为无时区的TIMESTAMP类型,完全匹配你表中created、expires字段的TIMESTAMP(0)类型要求。
  • 替代MySQL的DATE_ADD():PostgreSQL支持直接对时间值做加减运算,+ INTERVAL '1 day' * ?可以快速实现按指定天数增加时间;如果偏好更清晰的写法,make_interval(days => ?)能明确指定天数参数,效果完全一致。

可选精度处理

由于你的表字段是TIMESTAMP(0)(精度到秒),如果需要确保时间戳严格截断到秒,可以用DATE_TRUNC('second', CURRENT_TIMESTAMP AT TIME ZONE 'UTC')替代原时间表达式,不过PostgreSQL在插入时会自动适配字段精度,这一步不是必须的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:40:24