MySQL时间与历元比较

MySQL时间与历元比较,mysql,database,epoch,Mysql,Database,Epoch,我试图实现三次返回“最佳”的逻辑。我的数据库字段是: 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 我的逻辑应该是: 如果填充了

我试图实现三次返回“最佳”的逻辑。我的数据库字段是:

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
我的逻辑应该是:

  • 如果填充了FIRST_TIME,则返回转换为美国/东部时间的HH:mm:ss格式
  • 否则,如果第二个时间(转换为美国/东部)晚于第三个时间,则返回美国/东部时间中的第二个时间
  • 否则第三次返回

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

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

    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,