Лучший способ хранить промежуток времени в базе данных MySQL?

Я хотел бы хранить количество времени для чего-то в базе данных mysql, для того, чтобы что-то заняло, например 2 часа, 5 минут, 10 секунд. Точность до второго предпочтительна, но не обязательна. Каков наилучший способ сделать это?

 GSto05 окт. 2010 г., 22:58
хороший момент @ Андрей. Я собирался перейти к типу TIME, посмотрев на некоторые ответы, но после размышления о том, как это будет реализовано в приложении, целочисленное значение w / секунд имеет больше смысла (много математики / сравнение происходит со временем).
 Andrew05 окт. 2010 г., 22:49
Цель может иметь значение здесь; если вам достаточно целого числа секунд, то это может быть путь. Я не проверял документацию mysql некоторое время, но я не помню, чтобы mysql имел тип данных timespan.
 Wonko the Sane05 окт. 2010 г., 22:52
Я не знаю особенностей MySQL, но по моему опыту, если все, что вам нужно, это точность «до второй», то сохранение TotalSeconds имеет больше смысла. Как правило, гораздо проще проанализировать это значение в любом заданном формате времени, чем при наличии кода для анализа, скажем, например, строки типа «00:00:00» в промежуточном формате.

Ответы на вопрос(3)

Решение Вопроса

MySQLВРЕМЯ type может хранить промежутки времени от '-838: 59: 59' до '838: 59: 59' - если это в требуемом диапазоне, и было бы полезно, чтобы MySQL изначально представлял эти промежутки в форме HH: MM: SS, тогда используйте это.

В противном случае, я бы просто использовал целочисленный тип для представления количества секунд.

Мне нравится хранить вещи в базе данных в качестве базовых единиц. Таким образом, я могу надежно и точно преобразовать все, что захочу позже.

Единственное, о чем вы должны беспокоиться, используя этот метод, - это снижение точности. Если вы сохраняете пройденное расстояние для поездок по пересеченной местности, дюймы или сантиметры могут оказаться не тем, что вы ищете.

В вашем случае я бы сохранил интервал в секундах или миллисекундах и пошел бы оттуда.

Как говорит Эндрю, целое поле с секундами уже может быть.

Если данные доступны, и их имеет смысл сохранить, я бы сохранил данные в двух метках времени MySQL с указанием времени начала и окончания (также, возможно, отлично подходит для последующего аудита), и использовал быDATE_DIFF() чтобы получить фактическую продолжительность.

Ваш ответ на вопрос