Подтвердить что ты не робот

Datetime vs Дата и время Mysql

Обычно я использую поле datetime для хранения обновленного времени данных, созданного в приложении, в приложении.

Но теперь я столкнулся с таблицей базы данных, где они сохранили отдельные и отдельные поля в таблице.

  • Итак, какова схема, в которой два из них должны использоваться и почему?
  • Какие плюсы и минусы связаны с использованием двух?
4b9b3361

Ответ 1

Я склонен думать, что нет никаких оснований сохранять дату и время в отдельных полях. MySQL предлагает очень удобные функции для извлечения деталей даты и времени значения datetime.

Хорошо. Могут быть некоторые соображения эффективности. В MySQL вы можете поместить отдельные индексы в поля. Итак, если вы хотите, например, искать конкретные времена, то запрос, который подсчитывается по часам дня (например), может использовать индекс в поле time. В этом случае индекс в поле datetime не будет использоваться. В отдельном поле date может быть проще написать запрос, который будет использовать индекс date, но, строго говоря, должен работать и datetime.

Одно время, когда я видел даты и время, хранящиеся отдельно, находится в торговой системе. В этом случае торговля имеет дату оценки. Время оценки - это что-то вроде "NY Open" или "London Close" - это не значение в реальном времени. Это описание времени суток, используемого для оценки.

Ответ 2

Существует огромная разница в производительности при использовании поля DATE над полем DATETIME. У меня есть таблица с более чем 4.000.000 записями, и для целей тестирования я добавил 2 поля с их собственным индексом. Один использует DATETIME и другое поле, используя DATE.

Я отключил кеш запросов MySQL, чтобы иметь возможность корректно протестировать и зациклять по одному и тому же запросу для 1000x:

SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10; DATETIME INDEX: 197,564 секунды.

SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10; ИНДЕКС ДАТЫ: 107.577 секунд.

Использование индексированного по дате поля имеет улучшение производительности: 45,55%!!

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

Ответ 3

Сложная часть - это когда вам нужно выполнить арифметику дат по значению времени, и вы не хотите, чтобы в микс была добавлена ​​дата. Пример:

myapptdate = 2014-01-02 09:00:00

Выберите такие-то, где myapptdate между 2014-01-02 07:00:00 и 2014-01-02 13:00:00

1900-01-02 07:00:00 2014-01-02 07:00:00