首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有用于纠正rails应用程序中时区错误的ruby脚本或gem?

问是否有用于纠正rails应用程序中时区错误的ruby脚本或gem?
EN

Stack Overflow用户
提问于 2011-12-02 19:43:33
回答 1查看 141关注 0票数 1

我目前正在使用rails 3.0.x应用程序,该应用程序最近从rails 2.x升级。最近,人们发现我们在MySQL中的时间戳已经从用PST时区偏移写成了UTC偏移量。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-02 19:55:00

这就是为什么您总是在UTC中节省时间,并在需要时在用户的本地时间呈现它们。很抱歉你不得不找出困难的方法!

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

每一张桌子都是这样的:

代码语言:javascript
复制
# 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8361701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档