当前位置:  开发笔记 > 后端 > 正文

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

如何解决《用于存储年份的MySQL类型:Smallint或Varchar还是Date?》经验,为你挑选了3个好方法。

我将在MySQL表中存储一年:将它存储为smallint或varchar更好吗?我认为,因为它不是一个完整的日期,日期格式不应该是一个答案,但我也会包含它.

SMALLINT?VARCHAR(4)?日期?别的什么?

例子:

2008年

1992年

2053

Powerlord.. 29

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



1> Powerlord..:

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



2> Gambrinus..:

我会选择small-int - 据我所知 - varchar会占用更多空间和日期.第二种选择是日期.



3> David Aldrid..:

我自己的经验是Oracle,它没有YEAR数据类型,但我一直试图避免为元素使用数字数据类型,因为它们只包含数字.(因此,这包括电话号码,社会安全号码,邮政编码以及附加示例).

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

另一条线索是将前导零作为数字的一部分存储的要求.

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

在国际环境中格式化电话号码是棘手的,或者当然,并且符合E.164要求国家/地区呼叫代码以"+"为前缀.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有