It's a simple query to retrieve for users, how many minutes, or hours or days they were last online. The calculations for hours and days are correct. However for minutes, the following is returning correct value but negative e.g. -4 minutes, -6 minutes, -10 minutes when should be positive.
select username,
(CASE
when TIMESTAMPDIFF(HOUR, lastlogin, '2016-05-03 16:39:01')<1
then concat(TIMESTAMPDIFF(MINUTE, '2016-05-03 16:39:01', lastlogin), ' mins')
when TIMESTAMPDIFF(DAY, lastlogin, '2016-05-03 16:39:01')<=2
then concat(TIMESTAMPDIFF(HOUR, lastlogin, '2016-05-03 16:39:01'), ' hrs')
else concat(TIMESTAMPDIFF(DAY, lastlogin, '2016-05-03 16:39:01'), ' days')
END) as difference
from member where lastlogin<'2016-05-03 16:37:01' order by lastlogin desc limit 15;
This is the piece of code generating this error, how to get it to return positive values?
concat(TIMESTAMPDIFF(MINUTE, '2016-05-03 16:39:01', lastlogin), ' mins')
For every TIMESTAMPDIFF you use (*, lastlogin, "date string") But for minutes you use
try
Or you could multiply the value by -1 as well.