作者:有风吹过best | 2023-08-28 17:28
我需要在数据库中插入一年(例如: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年的年份