Назад | Перейти на главную страницу

Хранить ВРЕМЯ в SQL

Как правильно хранить ВРЕМЯ дня в SQL?

Имейте поле, которое заботится только о том, когда произошло действие. Примерные значения будут 14:30 или 14:30, мне не важно какие. Это значение НИКОГДА (ха, ха) не будет добавляться, вычитаться, сравниваться и т. Д. Это просто статический атрибут.

Если вы используете Microsoft SQL Server или MySQL (я уверен, что другие тоже поддержат это, но это единственные 2, которые я точно знаю), они оба содержат выделенный тип данных для хранения значений времени.

Я всегда рекомендую хранить такие вещи, как дата и время, в их специальных форматах (DATE, TIME, DATETIME и т. д.), потому что тогда, если вам нужно запросить значения или иным образом манипулировать ими, это упрощает написание SQL, поскольку механизм SQL знает, какие данные находятся в поле. Если вы сохранили дату или время в VARCHAR например, вы можете или не можете (зависит от движка базы данных) иметь возможность написать запрос, в котором указано SomeDateTimeField >= '2011-01-01 09:00:00' AND SomeDateTimeField <= '2011-01-01 17:00:00' без рвоты, например.

Для справки: SQL Server и MySQL TIME информация о типе данных здесь.

Существует множество вариантов - самые большие три:

  1. Используйте INTEGER сохранение значений time_t в Unix (секунды с 01.01.1970)
    (Если вы пойдете по этому маршруту, убедитесь, что вы используете как минимум 64-битное целое число)

  2. Используйте типы даты и времени SQL
    (TIME, DATETIME, TIMESTAMPи т. д. - Список доступных типов зависит от сервера БД)

  3. Используйте скучный VARCHAR поле
    (Не делайте этого. Ваше «НИКОГДА» выше превратится в «Ну, только один раз ...»)


Самый «правильный» способ - использовать типы даты и времени для вашей реализации SQL. Обычно это позволяет вам использовать встроенные команды сравнения и форматирования дат.

Ближайшая секунда - это значения integer / time_t, поскольку есть четко определенные функции для преобразования и обработки этого представления даты.