【问题标题】:Converting Database records from eastern time to gmt将数据库记录从东部时间转换为格林威治标准时间
【发布时间】:2013-04-20 18:07:14
【问题描述】:

我的数据库中有几张表格,特别是最初根据东部时间设置的表格。它有 12k+ 条记录,我试图找到一种理智的方法来覆盖这些表上的数据时间记录,以匹配一个等效的 gmt 日期时间,而不必构建一个循环来逐个循环更新它们。是否可以有效地做到这一点,还是我必须一个一个地循环它们?

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:

    ADDTIME() 函数呢?您可以通过一个简单的查询来更新您需要的所有列

    【讨论】:

    • 不幸的是,这可能对我的某些问题有用。没有人会考虑人们从东到西或世界其他地区的时区偏移。所以我们最终得到的是严重冲突的日志以及相互冲突的库存数据
    • 最终目标是通过基于 gmt 日期/时间的所有内容并根据人员位置的偏移量进行调整来正确修复和同步所有内容
    • @chris 我知道你只需要更新日期。这越来越难了
    • 是的..它很粗糙,但一步一步。为了让事情按预期工作,我必须从某个地方开始......并且转换时间似乎是合乎逻辑的第一步,因为一旦我将用于修复代码的数据是正确的,我就可以修复代码根据需要在需要的地方进行补偿
    • @chris 这可能是你处理这个问题的最佳方法
    【解决方案2】:

    您可以使用 CONVERT_TZ() 函数。但在进行任何操作之前,请尝试进行备份(例如,将您的列复制到另一个名为 timetest 的列)

    然后试试这个:

    UPDATE table_name SET timecolumn = CONVERT_TZ(timecolumn,'EST','GMT');
    

    【讨论】:

    • 由于您的参考,我在一分钟前在 Stack 上找到了一篇关于此的帖子。我感到困惑的是,似乎我必须安装一些东西或重新配置整个 SQL 才能正确使用它?这种理解正确吗?
    • 与服务器当前位置与最初配置 sql 的方式有关吗?
    • Errrr...我不这么认为,看看那里dev.mysql.com/doc/refman/4.1/en/… 它是这样工作的:mysql> SELECT CONVERT_TZ('2013-04-20 18:00:00',' EST','GMT');
    • 很高兴我克隆了表,先尝试一下。运行将所有日期时间更改为 0000-00-00 00:00:00 :-\
    • 哎哟!! :( 你的数据时间是哪种类型?你能给我们举个例子吗
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多