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
如果超出,我需要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