2010-10-05 2 views
10

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

+2

Цель здесь может иметь значение; если для вас достаточно сохранения целого числа секунд, это может быть способ пойти. Я не проверял документацию mysql в то время, но я не помню, что mysql имеет тип данных с интервалом времени. – Andrew

+2

Я не знаю подробностей MySQL, но, по моему опыту, если все, что вам нужно, это «вторая» точность, то хранение TotalSeconds имеет наибольший смысл. Как правило, намного проще разобрать это значение в любом заданном формате времени, вместо того, чтобы иметь код для синтаксического анализа, сначала введите строку «00:00:00» в формат посредника. –

+0

хорошая точка @Andrew. Я собирался пойти с типом TIME после просмотра некоторых ответов, но, подумав о том, как он будет реализован в приложении, целое число w/seconds имеет больше смысла (много математики/сравнение происходит со временем). – GSto

ответ

16

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

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

3

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

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

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

1

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

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

Смежные вопросы