MySQL
MySQL
-- 需要先导入时区表(mysql_tzinfo_to_sql),否则返回 NULL
SELECT CONVERT_TZ('2024-06-01 10:00:00', 'Asia/Shanghai', 'UTC');
SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+00:00');
-- TIMESTAMP 列按会话时区自动换算;DATETIME 列原样存取PostgreSQL
PostgreSQL
SELECT TIMESTAMPTZ '2024-06-01 10:00:00+08' AT TIME ZONE 'UTC';
-- 2024-06-01 02:00:00
SELECT now() AT TIME ZONE 'Asia/Shanghai'; -- 换算成上海墙上时间| MySQL | CONVERT_TZ(dt, from, to);时区表未导入时返回 NULL |
|---|---|
| PostgreSQL | timestamptz 存 UTC,按 TimeZone 显示;AT TIME ZONE 显式换算 |
| 存储建议 | 统一以 UTC 或带时区类型落库,仅在展示层转换 |