Просто быстрый вопрос относительно хранения «времени» в базе данных. Я регистрирую время запуска пользователей в формате 00: 00: 00: 00 (часы, минуты, секунды, миллисекунды).
Первоначально я собирался сохранить его как, TIME
но потом я понял, что MySQL не поддерживает миллисекунды в этом типе.
Я буду хранить фактическое время, потраченное на секундомер пользователей, а не время, когда они запускались и заканчивали работу (это будет вычислено до вставки).
Какой тип поля лучше всего использовать? Я думал или double
или float
, но я не уверен, что это сработает?
источник
interval
этой цели существует стандартный тип данных SQL . Но не все СУБД (и определенно не MySQL) поддерживают это.Это зависит от того, как долго вы хотите измерить. Если вы не будете записывать в любое время дольше, чем 2 ^ 32 или 4294967296 мс, чем обычное беззнаковое целое, это просто хорошо. Это соответствует примерно 50 дням времени между прочим.
Если вы хранили метки времени Unix или большие интервалы, посмотрите на использование bigint. Это дает вам 8 байт пространства или возможность записывать время, равное 1,84467440737096e + 19 мс (что примерно составляет 500 миллионов лет)
источник
Если вы используете MySQL 5.6.4 или более поздней версии, вы можете использовать
TIME(3)
,DATETIME(3)
иTIMESTAMP(3)
типы столбцов для хранения до 6 цифр дробной (заменить3
с количеством дробных цифр , вам нужно). Дробная часть добавляется к временной строке после точки; Пример:2018-09-08 17:51:04.781
.Официальная ссылка
источник