DATETIME начало DATETIME конец
Я умоляю вас использовать два значения DATETIME вместо этого, помеченные как event_start и event_end .
Время - сложное дело
Большая часть мира в настоящее время приняла метрическую систему, основанную на ужасе, для большинства измерений, правильно или неправильно. В целом это хорошо, потому что, по крайней мере, все мы можем согласиться с тем, что a g, a ml, является кубическим сантиметром. По крайней мере, примерно так. Метрическая система имеет много недостатков, но, по крайней мере, она постоянно ошибочна на международном уровне.
Однако со временем мы имеем; 1000 миллисекунд в секунду, от 60 секунд до минуты, от 60 минут до часа, 12 часов для каждой половины дня, примерно 30 дней в месяце, которые варьируются в зависимости от месяца и даже года, каждая страна имеет свое смещение времени от других время форматирования в разных странах различно.
Это много, что нужно переварить, но для такого сложного сценария невозможно найти простое решение.
Некоторые углы можно обрезать, но есть такие, где лучше не
Хотя верхний ответ здесь говорит о том, что вы сохраняете целое число минут после полуночи, может показаться вполне разумным, я научился избегать этого трудным путем.
Причины применения двух значений DATETIME - повышение точности, разрешения и обратной связи.
Все это очень удобно, когда дизайн дает нежелательные результаты.
Сохраняю ли я больше данных, чем требуется?
Изначально может показаться, что хранится больше информации, чем мне требуется, но есть веская причина принять этот удар.
Хранение этой дополнительной информации почти всегда приводит к экономии времени и усилий в долгосрочной перспективе, потому что я неизбежно обнаруживаю, что когда кому-то говорят, сколько времени заняло что-то, они дополнительно хотят знать, когда и где произошло событие тоже.
Это огромная планета
В прошлом я был виновен в том, что игнорировал, что есть другие страны на этой планете, кроме моей. В то время это казалось хорошей идеей, но это ВСЕГДА приводило к проблемам, головным болям и потерянному времени в дальнейшем. ВСЕГДА учитывайте все часовые пояса.
C #
DateTime прекрасно отображает строку в C #. Метод ToString (string Format) компактен и легко читается.
1053 * Е.Г. *
new TimeSpan(EventStart.Ticks - EventEnd.Ticks).ToString("h'h 'm'm 's's'")
SQL-сервер
Кроме того, если вы читаете свою базу данных отдельно от интерфейса приложения, тогда dateTimes легко читать с первого взгляда, и выполнять вычисления на них просто.
1062 * Е.Г. *
SELECT DATEDIFF(MINUTE, event_start, event_end)
Стандарт даты ISO8601
Если вы используете SQLite, у вас его нет, поэтому вместо этого используйте текстовое поле и сохраните его в формате ISO8601, например.
"2013-01-27T12: 30: 00 + 0000"
Примечания:
1085 * Е.Г. *
TimeOffset=(±Longitude.24)/360
... где ± относится к восточному или западному направлению.
Поэтому стоит подумать, стоит ли хранить данные о долготе, широте и высоте над уровнем моря. Это будет зависеть от приложения.
ISO8601 - международный формат.
Вики очень хороша для подробностей на http://en.wikipedia.org/wiki/ISO_8601.
Дата и время сохраняются в международном времени, а смещение записывается в зависимости от того, где в мире было сохранено время.
По моему опыту, всегда необходимо хранить полную дату и время, независимо от того, думаю ли я, когда я начинаю проект. ISO8601 - это очень хороший, перспективный способ сделать это.
Дополнительные советы бесплатно
Стоит также группировать события как цепочку. Например. если записывается гонка, все событие может быть сгруппировано по racer, race_circuit, circuit_checkpoints и circuit_laps.
По моему опыту также целесообразно определить, кто сохранил запись. Либо в виде отдельной таблицы, заполненной триггером, либо в качестве дополнительного столбца в исходной таблице.
Чем больше вы положите, тем больше вы получите
Я полностью понимаю желание быть как можно более экономичным с пространством, но я бы редко делал это за счет потери информации.
Эмпирическое правило с базами данных, как гласит заголовок, база данных может сообщить вам только то, для чего она имеет данные, и может быть очень дорого возвращаться к историческим данным, заполняя пробелы.
Решение состоит в том, чтобы сделать это правильно с первого раза. Это, конечно, легче сказать, чем сделать, но теперь вы должны глубже понять эффективный дизайн базы данных и впоследствии иметь гораздо больше шансов сделать это правильно с первого раза.
Чем лучше ваш первоначальный проект, тем дешевле будет ремонт.
Я только говорю все это, потому что, если бы я мог вернуться назад во времени, то это то, что я бы сказал себе, когда попал туда.