在MySQL中使用字符串数据类型而不是使用日期时间数据类型是一个好主意吗?

时间:2011-10-19 07:09:53

标签: mysql string datetime date

在MySQL数据库之上实现Web应用程序时,我想是否只使用字符串数据类型存储日期是个好主意?

例如,我可以将日期存储为“201110191503999”到数据库中。这也方便按日期查询。例如,从some_table中选择*,其中the_date类似于'20111019%'

如果我们使用字符串作为日期,是否存在任何性能问题?使用日期/日期时间数据类型有什么好处吗?

提前致谢!

3 个答案:

答案 0 :(得分:6)

始终使用列类型来满足需要的内容;如果您使用的是日期,请使用DATETIME,如果是时间戳,请使用TIMESTAMP,依此类推。

根据您编码的内容,数据的所有格式都可以在您使用的任何语言的实际页面上完成。

此外,您可以利用NOW()之类的MySQL函数,而不是使用该语言的版本,然后将其存储到数据库中。

答案 1 :(得分:6)

如果您的数据是日期类型,则将数据存储在DATE(如果您有时间元素,则存储在DATETIME中)。

如果您将日期存储为字符串,那么您就会遇到麻烦!例如,什么是阻止某人将'我不是约会'的值写入字符串'date'字段?或者如果你有'20111019'和'2011-10-19'并希望它们被视为平等,会发生什么?此外,你会错过MySQL DATE and TIME specific functions

的整个筏

如果可以避免,请不要将日期存储为字符串。

答案 2 :(得分:0)

我在考虑做同样的事情。我一直在和MySQL争吵,试图让它在数据库中存储一个独立于时区的值 - 这是基于GMT的。它真的不起作用。尝试使用Java尝试各种标志useTimeZone=true和JDBCShift - 仍未获得任何升空。由于一些奇特的Java消息,Kuala Lampur时区也不起作用。因此,如果您可以控制格式,请确保使用String类型。许多人以前都做过。