【问题标题】:Calculate the difference between two timefields计算两个时间域之间的差异
【发布时间】:2012-10-22 06:09:25
【问题描述】:

您好,我正在使用第三方 API 来显示我们网站中的提要,因为我在 db 表中有名为 opentimeclosetime 的字段。 feed 表每 20 秒更新一次。一切正常,现在问题出在 opentimeclosetime 上。从我服务器的当前时间开始,它会在未来提供 3 小时的时间(可能是他们的服务器时间)。举例来说,如果我的服务器当前时间是上午 8:00,那么在时间馈送表正在更新 opentime 为上午 11:00(从现在起 3 小时,有时会发生变化)。我们无法对feed 表进行任何更改,因为该表是通过 API 调用自动更新的。

所以我想找出这两者之间的时间差(opentime - currenttime),我怎样才能将opentime转换为我的服务器时间。

我在my-sql查询中尝试了以下代码,

TIMESTAMPADD(MINUTE,-180,FROM_UNIXTIME(opendate) // subtracting 3 hours(180 min) from the opendate.

还有其他方法吗?

提前感谢您的指导。

【问题讨论】:

  • 请原谅我的提问,但如果您想计算两次之间的时差,那么您处理的时区真的很重要吗?
  • @NickBarrett-我们不知道他们使用的是哪个时区,但我们使用的是 IST。

标签: php mysql datetime timestamp


【解决方案1】:

您可以更改 MySQL 的默认时区。这可以设置为您的 MySQL 服务器的默认值,或者在每个连接中动态设置。像这样的:

set timezone='your timezone';

http://dev.mysql.com/doc/refman/5.5/en//time-zone-support.html

【讨论】:

    【解决方案2】:

    为 mysql 配置设置时区

    set timezone='your timezone';
    

    试试看

    SELECT TIMESTAMPDIFF(MINUTE,'2012-10-21', NOW()) as diff;
    diff=1997
    

    【讨论】:

    • 我可能是错的,但我认为 MySQL DateTime 函数不会直接在该字段上工作,因为他存储的是 Unix 时间戳而不是 MySQL 时间值。
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2021-03-18
    • 2021-11-25
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多