将日期值插入数据库时出错

本文关键字:出错 数据库 插入 日期 | 更新日期: 2023-09-27 17:59:47

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

这是我得到的错误

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

将日期值插入数据库时出错

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

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

相反,将该值提供为具有DateTime值的SqlParameter

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