MySQL запрос -> используя время, чтобы изменить значение int и отсортировать его - PullRequest
0 голосов
/ 03 августа 2011

Я делаю многопользовательскую таблицу рекордов в игре. Результаты должны уменьшиться на 1 балл в час. Можно ли сделать запрос, который подсчитывает, сколько часов прошло с момента последней отправки оценки, используя отметку времени и целое число? Я посмотрел на TIME_TO_SEC (), но как мне объединить эту функцию со столбцом оценки?

На обычном языке это то, что я хотел бы сделать:

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

А затем сортировать таблицу по тому, что возвращает эта функция ...

1 Ответ

0 голосов
/ 03 августа 2011

сделать столбец 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() ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...