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

PostgreSQL中将所有行的悉尼本地时间转换为UTC的方法

解决悉尼时间转UTC的批量更新问题

你的错误是因为子查询返回了表中所有行的结果,而SET子句需要的是当前行对应的转换值,不需要嵌套子查询。直接在UPDATE中逐行处理每个time字段即可。

正确的SQL语句

UPDATE time_table
SET time = (time AT TIME ZONE 'Australia/Sydney') AT TIME ZONE 'UTC';

语句说明

  1. time AT TIME ZONE 'Australia/Sydney':将表中存储的无时区timestamp值,转换为代表悉尼本地时间的带时区时间(timestamptz类型),自动适配悉尼的夏令时/冬令时偏移。
  2. AT TIME ZONE 'UTC':将带时区的悉尼时间转换为UTC时区的无时区timestamp值,得到最终需要的结果。

转换结果验证

  • 原时间2022-10-01 00:00(悉尼夏令时+11):转换后为2022-09-30 14:00,与你的期望一致。
  • 原时间2022-10-31 23:59(悉尼夏令时+11):转换后应为2022-10-31 12:59,你给出的期望结果可能存在笔误,实际计算需遵循时区偏移规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:10:36