0

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

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 中的前两个字段,但我对如何将其转换为正确的时区以及如何比较我的字段并返回最佳值感到困惑。

4

1 回答 1

0

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

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,
于 2012-10-06T16:23:41.010 回答