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

SQL DataType - 如何存储一年?

如何解决《SQLDataType-如何存储一年?》经验,为你挑选了3个好方法。

我需要在数据库中插入一年(例如:1988年,1990年等).当我使用Date或Datetime数据类型时,它显示错误.我应该使用哪种数据类型.



1> KM...:

常规的4字节INT是大的方式,是浪费空间!

您没有说出您正在使用的数据库,因此我不建议使用特定的数据类型.每个人都说"使用整数",但大多数数据库存储4个字节的整数,这比你需要的多.您应该使用两个字节的整数(SQL Server上的smallint),这将更好地节省空间.


@Weapon X,**为什么用4个字节来存储一年?**char(4)使用4个字节.我的回答建议使用两个字节的int,这是SQL Server上的一个`smallint`,可以存储范围内的值:-32,768到32,767,这足以存储一年.您希望尽可能少地使用空间,因为您可以每页修复更多数据,和/或内存中的更多数据和/或内存中的更多索引等.**如果我使用smallint并使用char(4),您将使用两倍的空间/内存来存储相同的数据.数据库处理你的`CHAR(4)`而不是我的`SMALLINT`需要更长的时间和更多的努力**
通常,使用int浪费空间比使用较小的数据类型更可取,因为大多数现代处理器比较小的数据类型更有效地处理4个字节的int(32位)。
@ender,总会有取舍,我会优化IO(以及较小的数据类型),因为IO通常是主要瓶颈。

2> TheTXI..:

如果您需要在数据库中存储一年,您可能要使用Integer数据类型(如果您只设置存储年份)或DateTime数据类型(这将涉及存储基本上为1/1 /的日期) 1990 00:00:00格式).


**不要懒惰并"只使用int".**正确调整数据类型,两个字节的int是更好的选择.通过以4个字节存储4位数年份,您浪费的资源不仅仅是磁盘空间.通过使用两倍的高速缓存,为此列推送两倍的IO数据等,您的系统将永远负担.这是一个没有道理的,请参阅:http://dba.stackexchange.com/q/4968
bb-但是32768年的问题呢?(j / k)

3> 小智..:

嘿,你可以在MySQL中使用year()数据类型它有两位数或四位数格式.

注意:允许的值为四位数格式:1901至2155.允许的值为两位数格式:70到69,表示从1970年到2069年的年份

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