3

我正在使用 C# 与 SQL 数据库交互。数据库有一个 DateTime 字段。当我尝试从 C# 编写 DateTime 对象时,出现以下错误:

错误 [22008] [Microsoft][ODBC SQL Server 驱动程序]日期时间字段溢出

我在这个话题上找到了这个:

http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/ac1b5a6d-5e64-4603-9c92-b75ba4e51bf2/

我可以在 C# 端对我的 DateTime 对象进行任何操作吗?

编辑 我正在尝试添加 DateTime.MinValue

4

4 回答 4

5

听起来你只是传递了一个糟糕的约会。例如,DateTime.MinValue 超出 SQL Server 日期时间值的可接受范围约 1600 年。

顺便说一句,您不应该将 ODBC 用于 C# 到 SQL Server 的通信。使用 System.Data.SqlClient 会给你更好的性能。

于 2010-07-26T20:22:41.157 回答
4

.NET DateTime 对象的范围比 SQL 日期/时间字段大。

在您的数据访问层中,每当您将日期写入数据库时​​,请确保该日期在 SqlDateTime.MinValue 和 SqlDateTime.MaxValue 的范围内。

于 2010-07-26T20:26:59.243 回答
2

我很确定,您的 .NET DateTime 未初始化,这意味着它是“0000-01-01”,这不是 SQL Server DATETIME 的有效值,而且通常不是所需的值 ;-)

于 2010-07-26T20:25:26.000 回答
1

将所有日期时间列更改为 datetime2 类型。使用下面的查询生成 sql 脚本。

select distinct concat('alter table ', table_name, ' alter column ',  column_name, ' datetime2 ', 
case when(is_nullable = 'NO') then ' NOT ' else '' end, ' NULL;') 
from information_schema.columns where data_type = 'datetime';
于 2019-04-05T05:54:40.190 回答