首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于存储年份的MySQL类型: Smallint还是Varchar还是Date?

用于存储年份的MySQL类型: Smallint还是Varchar还是Date?
EN

Stack Overflow用户
提问于 2009-03-04 15:37:58
回答 3查看 16K关注 0票数 22

我将在MySQL表中存储一年:将其存储为smallint还是varchar更好?我认为由于它不是完整的日期,所以日期格式不应该是答案,但我也会将其包括在内。

Smallint?varchar(4)?日期?还有别的吗?

示例:

  • 2008
  • 1992
  • 2053
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-04 15:40:11

我将使用YEAR(4)列类型...但只有当预期的年份在1901年和2155年的范围内...否则,请参阅Gambrinus的答案。

票数 35
EN

Stack Overflow用户

发布于 2009-03-04 15:40:39

我会使用small-int -据我所知,varchar会占用更多的空间和日期。第二个选项是日期。

票数 14
EN

Stack Overflow用户

发布于 2009-03-06 02:46:47

我自己的经验是使用Oracle,它没有YEAR数据类型,但我总是试图避免对元素使用数字数据类型,因为它们只由数字组成。(因此,这包括电话号码、社会保险号码、邮政编码以及其他示例)。

我自己的经验法则是考虑数据的用途。如果要对其执行数学运算,则将其存储为数字。如果您将执行字符串函数(例如,“取SSN的最后四个字符”或“将电话号码显示为(XXX) XXX-XXXX"),那么它就是一个字符串。

另一个线索是要求将前导零存储为数字的一部分。

此外,尽管通常被称为电话“号码”,但它们经常包含字母以指示存在作为后缀的分机号码。同样,标准书号可能以"X“结尾作为”校验位“,而国际标准序列号可能以"X”结尾(尽管国际标准书号国际中心反复将其称为8位代码http://www.issn.org/understanding-the-issn/what-is-an-issn/)。

在国际环境中,电话号码的格式化是棘手的,或者说,符合E.164要求国家呼叫代码以"+“为前缀。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/611105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档