我有一个5列的数据表,其中一行被数据填充,然后通过事务保存到数据库。
保存时,返回一个错误:
将datetime2数据类型转换为datetime数据类型会导致值超出范围
它暗示,正如阅读,我的数据表有一个类型的DateTime2和我的数据库一个DateTime;这是错误的。
date列设置为DateTime,如下所示:
新数据专栏(“myDate, Type.GetType”)
问题
是否可以在代码中解决这个问题,或者是否必须在数据库级别上更改某些内容?
我有一个5列的数据表,其中一行被数据填充,然后通过事务保存到数据库。
保存时,返回一个错误:
将datetime2数据类型转换为datetime数据类型会导致值超出范围
它暗示,正如阅读,我的数据表有一个类型的DateTime2和我的数据库一个DateTime;这是错误的。
date列设置为DateTime,如下所示:
新数据专栏(“myDate, Type.GetType”)
问题
是否可以在代码中解决这个问题,或者是否必须在数据库级别上更改某些内容?
当前回答
有时它在开发机器上工作得很好,而在服务器上则不行。在我的例子中,我必须写:
<globalization uiCulture="es" culture="es-CO" />
在网络上。配置文件。
机器(服务器)中的时区是正确的(CO地区),但web应用程序不是。这个设置完成了,它再次工作正常。
当然,所有的约会都是有价值的。
:D
其他回答
在我的例子中,当为Nullable DateTime列显式分配NULL值时,然后尝试保存更改。这个错误将会弹出。
您将有日期列,它被设置为允许的数据时间的最小值,如1/1/1001。
为了克服这个问题,你可以为ur属性设置正确的datetime值,也可以设置另一个神奇的属性,如IsSpecified=true。
我遇到了这个问题,并将以下内容添加到我的datetime属性中:
[Column(TypeName = "datetime2")]
public DateTime? NullableDateTimePropUtc { get; set; }
我在一个简单的控制台应用程序项目中遇到了这个问题,我的快速解决方案是通过运行这个方法将任何可能的datetime2日期转换为可空的datetime:
static DateTime? ParseDateTime2(DateTime? date)
{
if (date == null || date.ToString() == "1/1/0001 12:00:00 AM")
{
return null;
}
else
{
return date;
}
}
这当然不是一个完全全面的方法,但它满足了我的需要,也许它会帮助其他人!
在我的SQL Server 2008数据库中,我有一个标记为不可空的DateTime列,但有一个GetDate()函数作为其默认值。当使用EF4插入新对象时,我得到了这个错误,因为我没有显式地在对象上传递DateTime属性。我期望SQL函数为我处理日期,但它没有。我的解决方案是从代码中发送日期值,而不是依赖数据库来生成它。
obj.DateProperty = DateTime.now; // C#