使用DateTime字段更新错误

时间:2013-01-11 11:12:10

标签: c# datetime dataset

我有一个方法,它接收了一些参数,其中有三个DateTime字段(从Web窗体填充)

方法使用自动生成的TableAdapterDataSet将新记录添加到表中。在 Table.Add[newRow] 语句之后,我们调用 Dataset.Update(Table) 语句将添加内容保留在数据库中。

虽然这几乎适用于所有情况,但它有时会出错: System.Data.SqlClient.SqlException (0x80131904): The conversion of a date data type to a datetime data type resulted in an out-of-range value The statement has been terminated.

有没有人知道可能发生的事情?

2 个答案:

答案 0 :(得分:2)

来自here

  

date数据类型可以保存从1年1月1日到12月31日的日期,   9999. datetime数据类型只能保存从1753年1月1日到9999年12月31日的日期。因此,您的表中的日期必须包含值   不到1753年1月1日。

由于DateTime是一个结构,因此总是有一个值(DateTime.MinValue),另一个可能的原因是DateTime无法成功解析。

因此,如果DateTime的有效范围为SqlDateTime,您可以在插入之前进行检查:

DateTime darkAge = new DateTime(1111, 1, 1);
if (darkAge >= SqlDateTime.MinValue.Value && darkAge <= SqlDateTime.MaxValue.Value)
{
    // we're not gettting here since the dark age was before 1753 
}

答案 1 :(得分:0)

是的,它的becoz SQL DateTime和DotNet DateTime在允许的范围内有所不同。

SqlDateTime.MinValue != DateTime.MinValue, why?