我将在MySQL表中存储一年:将其存储为smallint还是varchar更好?我认为由于它不是完整的日期,所以日期格式不应该是答案,但我也会将其包括在内。
Smallint?varchar(4)?日期?还有别的吗?
示例:
发布于 2009-03-04 15:40:11
我将使用YEAR(4)列类型...但只有当预期的年份在1901年和2155年的范围内...否则,请参阅Gambrinus的答案。
发布于 2009-03-04 15:40:39
我会使用small-int -据我所知,varchar会占用更多的空间和日期。第二个选项是日期。
发布于 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要求国家呼叫代码以"+“为前缀。
https://stackoverflow.com/questions/611105
复制相似问题