Подтвердить что ты не робот

Время хранения MySQL - тип данных?

Мне нужно рассчитать время, которое пользователь проводит на сайте. Это разница между временем выхода из системы и временем входа в систему, чтобы дать мне что-то вроде "Mr X провел 4 часа и 43 минуты в Интернете". Итак, чтобы сохранить 4 часа и 43 минуты, я объявил следующее: duration время NOT NULL

Является ли это правильным или лучшим способом сохранить это? Мне нужно сохранить в БД, потому что у меня есть другие вычисления, которые мне нужно использовать для других случаев использования.

4b9b3361

Ответ 1

Сохранение его как целого числа секунд будет лучшим способом.

  • UPDATE будет чистым и простым - т.е. duration = duration + $increment
  • Как отметил Тристрам, ограничения используются в поле TIME - например. "TIME значения могут варьироваться от '-838:59:59' до '838:59:59'"
  • Форматирование отображения дней/часов/минут/секунд не будет жестко запрограммировано.
  • Выполнение ваших других вычислений почти наверняка будет более ясным при работе с целым числом "количество секунд".

Ответ 2

Я бы не использовал время, так как вы ограничены 24 часами. Проще всего просто сохранить целое число за считанные минуты (или секунды в зависимости от требуемого разрешения).

Ответ 3

Рассмотрите возможность хранения обоих значений как UNIX-эпоха-дельта.

Я обычно предпочитаю использовать подписанный (64b) bigint (для второго разрешения), или (подписанный) (64b) double (если требуются доли секунды), или подписанный (32b) int (если уменьшен до минутного или почасового значения),

Сделайте блок явным образом в имени столбца, например, с суффиксом вроде "_epoch_minutely", например: "start_epoch_minutely", "законченное_epoch_minutely".