2016-04-15 14 views
0

datetimeフィールドとCASEの機能に問題があります。私はユーザーの最後のアクションのタイムスタンプを保存しています。最後のアクションが最後の5分間であれば、ユーザーがオンラインであることを示すビューを作成したいと思います。MySQL datetimeケース

しかし、私の機能は機能していません。私はあなたの助けが必要です。これが私が試したことです。 usersテーブルから

SELECT 
CASE a.lastAction 
WHEN >= (NOW() - INTERVAL 5 MINUTE) THEN 
    1 
ELSE 
    0 
END AS 'online' 
FROM 
    users a 

サンプルdatetimeデータ:事前に2015年12月22日午後09時43分01秒

感謝。

答えて

2

>=演算子を使用しているため、クエリでエラーが返されます。 case syntaxを確認する必要があります。 WHEN句の値は式でなければなりません。

CASE case_value 
    WHEN when_value THEN statement_list 
    [WHEN when_value THEN statement_list] ... 
    [ELSE statement_list] 
END CASE 
:あなたは、MySQLでCASEブロックを書くには二つの方法があることに気づくかもしれません -

SELECT 
CASE 
WHEN a.lastAction >= (NOW() - INTERVAL 5 MINUTE) THEN 
    1 
ELSE 
    0 
END AS 'online' 
FROM 
    users a 

は、私は単にWHEN句でa.lastActionを移動:

だから、あなたは、このアプローチを使用する必要がありますあなたは肝炎すべき

または

CASE 
    WHEN search_condition THEN statement_list 
    [WHEN search_condition THEN statement_list] ... 
    [ELSE statement_list] 
END CASE 

eは2番目を使用しました。

+0

良い答え!どうもありがとうございました。 – lingo

0

これを試してください。

SELECT 
IF (a.lastAction >= (NOW() - INTERVAL 5 MINUTE), 1,0) AS 'online' 
FROM users a` 
+2

なぜこの問題が修正されたかを説明してください。 – fluter