0
ユーザーを検索するための単純なクエリです。最後にオンラインになった時間は何分、何時間か何日かです。時間と日の計算は正しいです。しかし、分の場合、以下は正しい値を返すが、例えば負である。 -4分、-6分、プラスになるべきときは-10分。timestampdiffが正しくは負の分を返します
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;
これは正の値を返すためにこのエラーを生成するコードです。
使用するすべてのTIMESTAMPDIFF(*、lastlogin、 "日付文字列") についてはconcat(TIMESTAMPDIFF(MINUTE, '2016-05-03 16:39:01', lastlogin), ' mins')
-1を掛けることができます。 – Clint