修复数据库时区问题:在 DSN 连接字符串中添加 TimeZone=Asia/Shanghai 参数

问题描述:
- PostgreSQL 数据库时区设置为 UTC
- 应用代码使用本地时区(Asia/Shanghai, UTC+8)
- 导致数据库存储的时间戳相差 8 小时

解决方案:
- 在 pkg/database/postgres.go 的 DSN 构建中添加 TimeZone=Asia/Shanghai
- PostgreSQL 驱动会自动处理时区转换(应用时区 ↔ UTC)
- 与测试代码保持一致(测试中已使用该参数)

影响范围:
- 新写入的时间戳将正确转换为 UTC 存储
- 从数据库读取的时间自动转换为应用时区
- 需要重启服务使配置生效
This commit is contained in:
2026-01-21 10:20:25 +08:00
parent 4abbf558e4
commit 291c3d1b09

View File

@@ -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,