在MySQL数据库之上实现Web应用程序时,我想是否只使用字符串数据类型存储日期是个好主意?
例如,我可以将日期存储为“201110191503999”到数据库中。这也方便按日期查询。例如,从some_table中选择*,其中the_date类似于'20111019%'
如果我们使用字符串作为日期,是否存在任何性能问题?使用日期/日期时间数据类型有什么好处吗?
提前致谢!
答案 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类型。许多人以前都做过。