2

我在将日期值插入数据库时​​遇到了一个奇怪的问题。在调试我的程序时,我意识到它会将前五行插入数据库,但在第六行它会引发异常。我通过检查可以使用第六个成功执行的前 5 个查询来验证它是否是语法错误,或者是否在此过程中发生了某些变化,并且它们都是相同的。如果类型有问题,它应该从一开始就抛出异常。你怎么看?

这是我得到的错误

将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。

4

2 回答 2

5

将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。

这表明您将值指定为字符串,并执行转换。不要那样做。尽可能避免字符串转换。(我怀疑您提供的字符串格式与用于解析的字符串格式之间很可能存在脱节。完全删除字符串转换是解决此问题的最佳方法。)

相反,将值作为SqlParameter带有值的 a 提供DateTime

于 2013-02-18T13:02:46.313 回答
0

我认为您的问题是由于 C# 中从 01-01-0001 开始的 DateTime 类型与从 1753 年 1 月 1 日到 9999 年 12 月 31 日的 SQL Server 中的 DateTime 类型之间的差异,请检查此链接,所以我认为(由于对于 Jon 解释的错误)您正在尝试将小于 01-01-1753 的 Date 值插入 SQL Server。这就是显示 SQL 异常的原因。

于 2013-02-18T13:25:06.563 回答