Является ли хорошей идеей использовать строковый тип данных для дат в MySQL вместо использования типа данных datetime? - PullRequest
5 голосов
/ 19 октября 2011

При реализации веб-приложений поверх базы данных MySQL, я думаю, будет ли хорошей идеей просто использовать строковый тип данных для хранения дат?

Например, я могу просто хранить даты как 201110191503999'в базу данных.Также это удобно для запроса по дате.Например, выберите * из some_table, где the_date, например '20111019%'

Есть ли какие-либо проблемы с производительностью, если мы используем строку для дат?и есть ли какие-либо преимущества в использовании типа данных date / datetime?

Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 19 октября 2011

Если ваши данные относятся к типу даты, сохраните данные в DATE (или DATETIME, если у вас есть элемент времени).

Если вы храните даты в виде строк, то вы напрашиваетесь на неприятности! Например, что мешает кому-то записать значение «я не дата» в поле «дата» вашей строки? Или что произойдет, если у вас есть «20111019» и «2011-10-19» и вы хотите, чтобы к ним относились как к равным? Кроме того, вы пропустите целый набор MySQL DATE и TIME определенных функций

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

6 голосов
/ 19 октября 2011

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

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

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

0 голосов
/ 19 декабря 2012

Я думаю о том же. Я боролся с MySQL, пытаясь заставить его хранить независимое от часового пояса значение в базе данных - что-то на основе GMT. Это действительно не работает. Пробовал все виды флагов useTimeZone=true и JDBCShift с Java - все еще не получая никакого взлета. Также часовой пояс Куала Лампур не работает из-за какого-то экзотического сообщения Java. Так что, если вы можете контролировать формат, обязательно используйте тип String. Многие делали это раньше.

...