2012-10-06 78 views
0

我試圖實現返回三次「最佳」的邏輯。我的數據庫字段有:MySQL時間與時代比較

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中的前兩個字段,但是我很困惑如何將其轉換爲正確的時區,以及如何比較字段並返回最佳值。

+1

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz和http:///dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_time –

回答

0

不錯,謝謝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,