Продолжительность хранения MySQL - тип данных? - PullRequest
27 голосов
/ 21 декабря 2010

Мне нужно рассчитать время, которое пользователь проводит на сайте. Разница между временем выхода из системы и временем входа в систему дает мне что-то вроде «Мистер Х провел 4 часа и 43 минуты в сети» Таким образом, чтобы сохранить 4 часа и 43 минуты, я объявил это так: duration время НЕ НУЛЬ

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

Ответы [ 3 ]

40 голосов
/ 21 декабря 2010

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

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

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

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

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

0 голосов
/ 21 декабря 2010

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

...