我在INSERT语句中得到了这个MSSQL 2008
System.Data.SqlClient.SqlException: datetime2数据的转换 输入到日期时间数据类型 在超出范围的价值。
答案 0 :(得分:20)
SQLServer的datetime数据类型允许值的范围小于.net datetime数据类型。 SQLServer的日期时间类型基本上支持格里高利历,因此您可以拥有的最小值是1/1/1753。在2008年,SQLServer添加了一个支持回到第1年的datetime2数据类型(没有第0年)。听起来你正试图将一个17年1月1日之前的日期时间值插入到datetime(而不是datetime2)的SQLServer列中
答案 1 :(得分:17)
定义与基于24小时制的时间相结合的日期。 datetime2可以视为现有日期时间类型的扩展,它具有更大的日期范围,更大的默认小数精度和可选的用户指定精度。
答案 2 :(得分:2)
来自technet:
定义与基于24小时制的时间相结合的日期。 datetime2可以视为现有日期时间类型的扩展,它具有更大的日期范围,更大的默认小数精度和可选的用户指定精度。
我必须检查,因为我认为datetime2
与varchar2
有某种关系。显然,根本就没有关系。
输入您的代码,以便我们猜出是什么导致了问题。
答案 3 :(得分:2)
您的数据库表是否有“DATETIME”或“SMALLDATETIME”列,并且您尝试插入超出范围的日期? DATETIME涵盖1753-1-1至9999-12-31,而SMALLDATETIME仅涵盖1900-1-1至2079-6-6。
新的SQL Server 2008 DATETIME2数据类型将涵盖0001-1-1到9999-12-31。
马克
答案 4 :(得分:0)
当我的数据库列创建为NOT NULL并且我在ADO.Entity框架EntityType中的DateTime属性上明确指定了Nullable = true时出现此错误。
要修复它,我将Nullable属性设置为=(无)