MySql DateDiff 不 return 负数

MySql DateDiff does not return negative

如果超出,我需要return负时间。

例如:

 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

这应该return

-7 days 10 hours

...但是我得到

7 days 10 hours

如何显示负数?

...

那是因为差异是 7 天 10 小时,始终没有 -7 天 ;)。您需要将结果转换为另一种类型,例如 REAL

不对比就给你一个不同bigger/smaller,所以:

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