gpt4 book ai didi

mysql - 将记录从 MySql 迁移到 Postgres 时,如何在 Rails 中设置查询的默认时区或设置日期时间值的偏移量

转载 作者:行者123 更新时间:2023-11-29 23:52:13 29 4
gpt4 key购买 nike

我在模型文件夹中创建了一个 ruby​​ 类来连接到旧版 MySQL 数据库,该数据库默认使用 Pacific/PT 作为 datetime 列。

但是,rails 将旧数据库记录中的 datetime 值视为 UTC,而不是 PT/Pacific。将此值插入到 Postgres 中是不正确的,因为 Postgres 时间戳(对于 Rails)是没有时区的时间戳(因此,值需要是 UTC)。

如何 1) 将我的 default_timezone 连接设置为太平洋时间或 2) 创建某种类型的偏移量以将值正确转换为 UTC?对于后者,偏移量将如何纳入夏令时的细微差别?

以下是我确认问题的方法:

[6] pry(LegacyClient)> @legacy.ClientRecordAddDate.to_yaml
=> "--- 2010-04-11 14:23:01.000000000 Z\n...\n"
[7] pry(LegacyClient)> @legacy.ClientRecordAddDate
=> Sun, 11 Apr 2010 07:23:01 PDT -07:00
[8] pry(LegacyClient)> self.default_timezone
=> :utc

最佳答案

首先,找到您的 Postgres 数据库集群中实际存在的时区名称:

SELECT *
FROM pg_timezone_names
WHERE name ~~* '%Pacif%'
OR abbrev = 'PT';

然后在您的 session 中设置该时区:

SET timezone = 'US/Pacific';

这意味着 timestamp [without time zone] 列中的值被解释为位于该时区,而 timestamp [with time zone] 是相对于 UTC 的偏移量相应地输入/输出。

在 Postgres 中设置配置参数的方法有很多。比较:

更多信息:

关于mysql - 将记录从 MySql 迁移到 Postgres 时,如何在 Rails 中设置查询的默认时区或设置日期时间值的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571933/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com