2016-05-03 8 views
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

-1を掛けることができます。 – Clint

答えて

0

しかし分間、あなたが

TIMESTAMPDIFF(MINUTE, '2016-05-03 16:39:01', lastlogin) 
を使用

TIMESTAMPDIFF(MINUTE, lastlogin, '2016-05-03 16:39:01') 

それともによって値を乗算可能性を試してみてください-1も同様です。

+0

属性を切り替えると同じ回答が返されますが、 –

関連する問題