2012-06-19 265 views

回答

9

試試這個::

select * from table order by TIMEDIFF(to, from) 
2
SELECT ... 
FROM ... 
ORDER BY DATEDIFF(endDate, starDate); 

[編輯] 上述查詢的時間差(該開始和結束時間的列之間的時間段)中的所有條目,以便它們與日期一起使用。正如康德Sashi指出,它會忽略時間你DATETIME

一部分。另一方面,如果差是TIME範圍(-838:59:59838:59:59)之外TIMEDIFF失敗。

一個完整的解決方案是:

SELECT ... 
FROM ... 
ORDER BY 
    DATEDIFF(endDate, starDate), 
    TIMEDIFF(TIME(endDate), TIME(starDate)); 

大概進行了苦頭,但...如果需要這樣的精確度,如果這兩個日期之間的差異可能是TIME範圍之外,那麼每分裂DATETIME列分成兩個DATETIME列肯定會表現更好,假設您將在四個結果列的每一列上應用一個索引。

+1

它只顯示日期的差異,大約有往返於當天 –

+1

@SashiKant正確的條目內容,TIMEDIFF()在這種情況下更合適。 – RandomSeed

0
SELECT something FROM table ORDER BY TIMEDIFF(end_date, start_date); 
0

mysql定義函數來計算像TIME_TO_SECTIMEDIFF 2個timestamp S,之間的差異。

SELECT TIME_TO_SEC(TIMEDIFF(from_time, to_time)) diff from your_table order by diff;