2017-05-26 232 views
2

如果超過,我需要返回負時間。MySql DateDiff不返回負數

例如:

SELECT 
CONCAT(FLOOR(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW()))/24), ' days ', 
MOD(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW())), 24), ' hours ', MINUTE(TIMEDIFF('2017-05-19 12:32:11', NOW())), ' minutes') AS RemainigTime, 
FROM kartica 

這應返回

-7天10小時

...但我得到

7天10小時

如何顯示負值?

...

+0

你的標題說'datediff',但問題使用'timeDiff測量'。 'timediff'確實返回負值,但是'HOUR(TIMEDIFF(...))'返回正值。 – Barmar

回答

1

它會會給你一個不差比較大/小,所以:

SELECT CONCAT(
    IF('2017-05-19 12:32:11' < NOW(), '-', ''), 
    FLOOR(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW()))/24), ' days ', 
    MOD(HOUR(TIMEDIFF('2017-05-19 12:32:11', NOW())), 24), ' hours ', 
    MINUTE(TIMEDIFF('2017-05-19 12:32:11', NOW())), ' minutes' 
) AS RemainigTime 
FROM kartica 
0

這是因爲性差異爲7天,10小時,總是沒有-7天)。您需要將結果轉換爲另一種類型像真正的