From 291c3d1b09823bc85c107a5ab51e3ae6baf65e14 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 21 Jan 2026 10:20:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=97=B6=E5=8C=BA=E9=97=AE=E9=A2=98=EF=BC=9A=E5=9C=A8=20DSN=20?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20TimeZone=3DAsia/Shanghai=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述: - PostgreSQL 数据库时区设置为 UTC - 应用代码使用本地时区(Asia/Shanghai, UTC+8) - 导致数据库存储的时间戳相差 8 小时 解决方案: - 在 pkg/database/postgres.go 的 DSN 构建中添加 TimeZone=Asia/Shanghai - PostgreSQL 驱动会自动处理时区转换(应用时区 ↔ UTC) - 与测试代码保持一致(测试中已使用该参数) 影响范围: - 新写入的时间戳将正确转换为 UTC 存储 - 从数据库读取的时间自动转换为应用时区 - 需要重启服务使配置生效 --- pkg/database/postgres.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/database/postgres.go b/pkg/database/postgres.go index 807ff1f..27edf65 100644 --- a/pkg/database/postgres.go +++ b/pkg/database/postgres.go @@ -16,7 +16,7 @@ import ( // InitPostgreSQL 初始化 PostgreSQL 数据库连接 func InitPostgreSQL(cfg *config.DatabaseConfig, log *zap.Logger) (*gorm.DB, error) { // 构建 DSN (数据源名称) - dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s", + dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s TimeZone=Asia/Shanghai", cfg.Host, cfg.Port, cfg.User,