将“year”列定义为Integer或String类型更好吗?

时间:2014-08-04 19:59:07

标签: mysql database database-design

我确实认识到如果一个列必须对其进行数学计算,那么它更适合作为整数。

我可能不得不在"年"进行数学计算。列,但最低限度。那么将它存储为String或Integer会更好吗?

感谢。

3 个答案:

答案 0 :(得分:4)

将其保存为整数。

虽然可能有一些应用程序,您正在经常阅读和提供此数据,因此int->字符串转换是一个问题...这将是一个边缘情况。

另一方面

  • 整数提供比数据存储中的字符串更小的选项(例如TINYINT)
  • 您可以避免因数学而导致的转化
  • 当他们查询自然是数字并获得字符串的数据类型时,会让所有开发人员感到困惑/烦恼/沮丧。

答案 1 :(得分:3)

如果您不希望您的YEAR变量包含非数字值,那么您应该将其存储为数字。

我不会将其存储为INT,因为我怀疑年份会达到INT所提供的限制。我会将其保存为SMALLINT甚至TINYINT,或者unsigned

SMALLINT UNSIGNED为您提供65535的最大值,除非您存储超过年份65535的年份,这应该足够了。

答案 2 :(得分:0)

你可能会发疯并将其保存为YEAR

这限制你到1901-2155。

如果限制性太强,我更喜欢CHAR(4)INT; MySQL DATETIME比较以类似字符串的方式完成..

您可以执行

之类的操作
WHERE year < CURDATE()

无需担心。