我需要插入一年:在数据库中(例如1988年,1990年等)。当我使用日期或日期时间 数据类型,它显示错误。其数据类型,我应该使用。

有帮助吗?

解决方案

如果您需要一年存储在数据库中,你要么需要使用一个整数数据类型(如果你是死心塌地只存储一年)或日期时间数据类型(这将涉及到存储的日期,基本上是1在格式/一千九百九十零分之一00:00:00)。

其他提示

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

你不说你正在使用的数据库,所以我不能推荐一个特定的数据类型。每个人都在说“使用整数”,但大多数数据库存储整数4个字节,比你需要的方式更多。您应该使用两个字节的整数(SQL Server上SMALLINT),这将节省空间更好。

嘿,你可以在MySQL中使用的年()数据类型 它是可用在2位或4位格式。

注意:数值允许四位数字格式:允许两位数字格式1901到2155的值:70〜69,表示年2070至69年

在MSSQL中存储一个“年”在理想情况下取决于你用它做什么是“年”的意义将是您的应用程序和数据库。话虽这么说,有几件事情需要在这里的状态。没有“数据类型”为年度为2012年MSSQL的。我会倾向于使用SMALLINT,因为它是唯一的2个字节瘦(节省您INT需求的4个字节的2)。你的限制是,你不能有一个比今年32767以上(与SQL Server 2008 R2的)。我真的不认为SQL将选择的数据库从万年现在别说32767您可以考虑INT为MSSQL年度()函数的数据类型为“DATE”转换为INT。就像我说的,这取决于你所得到的数据和往哪里去,但SMALLINT应该就好。 INT将是矫枉过正...除非你有其他原因,像我上面,或者如果规范要求需要它INT形式(例如与现有应用集成)提到的。最有可能的SMALLINT应该就好了。

短短一年,没有别的? 为什么不使用一个简单的整数?

使用整数如果你需要的存储是一年。您也可以使用日期时间,如果你认为会有基于日期计算在查询此列

存储可能是问题的一部分。这将如何价值查询中使用?

它是将要与另一日期时间的数据类型进行比较,或将所有相关联的行也有数值?

您将如何应对变化的要求?你多么容易的请求作出反应以较小的时间片来代替一年?即现在他们希望分季度看?

一个数字类型可以容易地在一个日期时间的查询由具有查找表的加入用含有象的开始的东西和停止日期(1/1 / X至12/31 / x)中,使用等..

我不认为使用的整数或整数的任何亚型是一个很好的选择。迟早你将不得不做其他日期一样操作就可以了。同样在2019年,我们不要过于担心空间。看看那些保存2个字节成本核算我们2000。

我建议使用年的日期+ 0101转换为一个真正的日期。同样,如果你需要一个月一年店面年+月+ 01的存储作为一个真正的日期。

如果你这样做,你就能够正确地进行“最新的东西”就可以了以后

您正试图在数据库中插入了一年,然后使用方法:点击type YEAR

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top