used_at timestamp with time zone NOT NULL,
Postgres中的值保存时不带时区(UTC):
2022-06-30 22:49:03.970913+00
使用此查询:
show timezone
我得到:
Etc/UTC
但是从Ent(使用pgx
stdlib
)我得到了值:
2022-07-01T00:49:03.970913+02:00
使用pgdriver
/pq
从DB获取UTC值。
如何设置pgx
以获取UTC值?
我也试着在下面的代码中使用这个连接字符串:
import (
"database/sql"
_ "github.com/jackc/pgx/v4/stdlib"
)
conn, err := sql.Open("pgx", "postgres://postgres:postgres@localhost/project?sslmode=disable&timezone=UTC")
//handle err
问题还在这里。
- 我需要一种方法来从数据库中获取UTC值(已存储在数据库中)。**
2条答案
按热度按时间8fq7wneg1#
timezone
不是有效的 * 参数关键字 *。但是,您可以使用
options
关键字指定在连接开始时发送到服务器的命令行选项。请记住,您需要percent encode其中的值。如何设置
TimeZone
的示例:然而,这只强制连接的时区,这似乎不会影响
pgx
如何解析从数据库读取的时间戳本身。事实上,它似乎直接或间接地依赖于主机的本地时区。确认您可以将全局time.Local
变量更新为UTC并观察差异。出于显而易见的原因,我会避免做上述事情。如果
pgx
不提供配置用来解析时间戳的默认位置的方法,那么我能想到的下一个最好的选择是使用自定义time.Time
类型。mspsb9vt2#
您可以将应用程序配置为全局使用UTC: