gpt4 book ai didi

mysql - 是否有用于纠正 Rails 应用程序中时区错误的 ruby​​ 脚本或 gem?

转载 作者:行者123 更新时间:2023-11-29 00:51:32 25 4
gpt4 key购买 nike

我目前正在使用最近从 rails 2.x 升级的 rails 3.0.x 应用程序。最近,我们发现,由于这次迁移,我们在 MySQL 中的时间戳已从 PST 时区偏移写入 UTC 偏移。

在检查问题后,我们决定将所有时间戳保留为 UTC 格式。不幸的是,我们需要遍历所有具有 PST 时间戳的旧记录,并将它们转换为 UTC(一个有点复杂的过程)。如果可能的话,我宁愿不重新发明轮子,这引出了我的问题:

有没有人编写过实用程序来处理 MySQL 数据库的 PST 时间戳到 UTC 时间戳的转换?

最佳答案

这就是为什么您总是以 UTC 时间保存时间,并在需要时以用户本地时间呈现它们。抱歉,您必须以艰难的方式找到答案!

您可以做的是记下发生转换的 id 值,然后使用 CONVERT_TZ() 调整该间隔之前的所有时间戳。 MySQL 中的方法。

每个表看起来像这样:

# List of maximum ID to adjust
max_id = {
'examples' => 100,
}
c = ActiveRecord::Base.connection

c.tables.each do |table|
# Set your specific time-zones as required, PST used as an example here.
timestamp_updates = c.columns(table).select do |col|
col.type == :datetime
end.collect(&:name).collect do |col|
"`#{col}`=CONVERT_TZ(`#{col}`, 'PST', 'UTC')"
end

next if (timestamp_updates.empty?)

c.execute("UPDATE `#{table}` SET #{timestamp_updates.join(',') WHERE id<=%d" % max_id[table])
end

关于mysql - 是否有用于纠正 Rails 应用程序中时区错误的 ruby​​ 脚本或 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361701/

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