2011-08-03 11 views
0

私はゲームにマルチプレイヤーハイスコアテーブルを作っています。スコアは1時間あたり1ポイント減少します。タイムスタンプと整数を使用してスコアを最後に提出してからの経過時間を計算するクエリを作成することは可能ですか?私はTIME_TO_SEC()を見てきましたが、その関数をscore-columnとどのように組み合わせるのですか?共通の言語でMySQLクエリ - >時間を使ってint値を変更してソートする

これは私がやってみたいものです。

float getScore(int timePassedInSeconds, float score) 
{ 
    return score-((float)timePassedInSeconds/3600.0f); 
} 

し、その関数が返すものに基づいてテーブルをソート...

+0

は多分[ 'TIMESTAMPDIFF(HOUR、COLVAL、NOW())'](http://dev.mysql.com/doc/してみてくださいrefman/5.5/ja/date-and-time-functions.html#function_timestampdiff)。 –

答えて

0

は(UNSIGNED INTが列をLAST_MODIFIED作りますそれをTIMESTAMPにすることはできますが、それは算術演算をちょっと混乱させます)。

CREATE TABLE scores(score FLOAT, last_modified INT UNSIGNED, ...); 

と、このようなあなたの更新操作でください:

UPDATE scores SET 
    score = score - ((CURRENT_TIMESTAMP() - last_modified)/3600.0), 
    last_modified = CURRENT_TIMESTAMP() ... 
関連する問題