【问题标题】:MySQL Time vs epoch comparisonMySQL时间与时代比较
【发布时间】:2012-09-27 11:53:08
【问题描述】:

我正在尝试实现返回“最佳”三倍的逻辑。我的数据库字段是:

FIRST_TIME - this is a long value in milliseconds from the epoch
SECOND_TIME - also a long value in milliseconds from the epoch
THIRD_TIME - this is an Time field, representing US/Eastern time, like 08:30:52

我的逻辑应该是:

  1. 如果填充了 FIRST_TIME,则返回转换为美国/东部时间的 HH:mm:ss 格式
  2. 否则,如果 SECOND_TIME(转换为美国/东部时间)晚于 THIRD_TIME,则返回美国/东部时间的 SECOND_TIME
  3. 否则返回 THIRD_TIME

我可以使用 FROM_UNIXTIME 获取 HH:mm:ss 中的前两个字段,但我对如何将其转换为正确的时区以及如何比较我的字段并返回最佳值感到困惑。

【问题讨论】:

标签: mysql database epoch


【解决方案1】:

很好,谢谢马克!现在我可以使用以下方法将我的纪元时间转换为时间值:

TIME(CONVERT_TZ(FROM_UNIXTIME(SUBSTRING(FIRST_TIME,1,10)),'GMT','US/Eastern'))

现在剩下的就是如何使用 MySQL 为我整理逻辑。我能够做到这一点:

(IF (FIRST_TIME IS NOT NULL,
    TIME(CONVERT_TZ(FROM_UNIXTIME(SUBSTRING(FIRST_TIME,1,10)),'GMT','US/Eastern')), 
IF(TIME(CONVERT_TZ(FROM_UNIXTIME(SUBSTRING(SECONT_TIME,1,10)),'GMT','US/Eastern')) > THIRD_TIME,
    TIME(CONVERT_TZ(FROM_UNIXTIME(SUBSTRING(SECOND_TIME,1,10)),'GMT','US/Eastern')),
THIRD_TIME))
) AS BEST_TIME,

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2011-04-28
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多