news 2026/4/30 15:11:30

GO时区【3】字段与连接设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GO时区【3】字段与连接设置

pgsql数据库需要指定时区么?当前字段(例如created_at)默认值为pgsql的now函数

在 PostgreSQL (PostgreSQL) 中,处理时区的关键在于字段类型的选择。强烈建议使用TIMESTAMP WITH TIME ZONE(简称timestamptz),并且数据库服务器时区通常保持 UTC。

1. 字段类型:timestampvstimestamptz

这是 PostgreSQL 中最容易混淆的地方:

  • timestamp(without time zone):它只是一个“墙上时间”。如果你存入2024-01-01 10:00,它就永远是这个数字。当你的北京用户和东京用户读取时,看到的都是10:00,这会导致东京用户实际上“晚了一小时”。
  • timestamptz(with time zone):这是推荐做法。
    • 原理:PostgreSQL 在存储时会将其转换为 UTC 存储。
    • 读取:当客户端连接时,PostgreSQL 会根据当前数据库连接的时区设置,自动把 UTC 转回对应的本地时间。

2. 关于now()函数

当你设置DEFAULT now()时:

  • 如果字段是timestamptznow()会包含当前时区信息并正确转换为 UTC 存储。
  • 只要你的 Go 程序或数据库连接配置了时区,读取出来的值就是准确的。

3. PostgreSQL 时区设置级别

你可以在三个层面指定时区:

  1. 服务器级 (Global):在postgresql.conf中设置timezone = 'UTC'。这是国际化项目的标准做法。
  2. 数据库级 (Database):ALTER DATABASE mydb SET timezone TO 'UTC';
  3. 连接级 (Session):这是解决你问题的核心。
    • 当东京用户连接时,Go 驱动可以在连接后执行SET TIME ZONE 'Asia/Tokyo';
    • 此时,执行SELECT created_at拿到的结果直接就是东京时间,无需在 Go 代码里手动转换。

4. 结论:你应该怎么做?

环节推荐配置
表定义created_at timestamptz DEFAULT now()
DB 存储统一存为 UTC (PostgreSQL 自动处理)
Go 驱动连接在 DSN 连接字符串中指定时区。例如使用jackc/pgxlib/pq时,加入timezone=UTCtimezone=Asia/Shanghai

建议实验

你可以尝试在数据库执行这段 SQL 感受区别:

-- 设置当前连接为北京时区 SET TIME ZONE 'Asia/Shanghai'; SELECT now(); -- 看到 +08 -- 设置当前连接为东京时区 SET TIME ZONE 'Asia/Tokyo'; SELECT now(); -- 看到 +09,且小时数自动 +1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 15:08:59

5分钟搞定!GB28181国标视频监控平台容器化部署终极指南

5分钟搞定!GB28181国标视频监控平台容器化部署终极指南 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持…

作者头像 李华
网站建设 2026/4/30 15:07:35

如何快速掌握Illustrator批量替换技巧:设计师的效率革命指南

如何快速掌握Illustrator批量替换技巧:设计师的效率革命指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾经面对数百个需要更新的图标感到绝望?是…

作者头像 李华
网站建设 2026/4/30 15:05:28

前端性能优化:SEO 优化详解

前端性能优化:SEO 优化详解 为什么 SEO 优化如此重要? 在现代Web应用中,SEO(搜索引擎优化)是一个常常被忽视的重要因素。合理的 SEO 优化可以提高网站在搜索引擎中的排名,增加网站流量,提升用户…

作者头像 李华
网站建设 2026/4/30 15:02:56

DeepSeek V4 与 MiMo V2.5 发布后,品牌 GEO 策略需要重新校准吗?

核心结论 DeepSeek V4 与 MiMo V2.5 在 2026 年 4 月先后开源发布,1M 上下文、MIT 协议、Token 价格大幅下探三项变化叠加,正在重塑 AI 引擎的内容引用机制。对品牌方而言,这意味着 GEO(Generative Engine Optimization&#xff0…

作者头像 李华
网站建设 2026/4/30 14:59:18

通过 curl 命令直接测试 Taotoken 的 ChatGPT API 接口

通过 curl 命令直接测试 Taotoken 的 ChatGPT API 接口 1. 准备工作 在开始之前,请确保您已具备以下条件: 有效的 Taotoken API Key(可在控制台创建)可执行 curl 命令的终端环境目标模型 ID(如 claude-sonnet-4-6&a…

作者头像 李华