SQL Server 2008 日期时间字段溢出
我正在使用 C# 与 SQL 数据库交互。数据库有一个日期时间字段。当我尝试从 C# 编写 DateTime 对象时,出现以下错误:
错误 [22008] [Microsoft][ODBC SQL Server 驱动程序]日期时间字段溢出
我在主题上发现了这个:
我可以在 C# 端对 DateTime 对象进行任何操作吗?
编辑 我正在尝试添加 DateTime.MinValue
I am using C# to interface with a SQL database. the database has a DateTime field. When I try to write a DateTime object from C#, I get the following error:
ERROR [22008] [Microsoft][ODBC SQL Server Driver]Datetime field overflow
I found this on the topic:
Is there any manipulation I can do to my DateTime object on the C# side?
EDITS
I am trying to add DateTime.MinValue
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
听起来你刚刚经历了一次糟糕的约会。例如,DateTime.MinValue 超出 SQL Server 日期时间值的可接受范围约 1600 年。
顺便说一句,您不应该使用 ODBC 进行 C# 到 SQL Server 的通信。使用 System.Data.SqlClient 将为您带来更好的性能。
Sounds like you are just passing in a bad date. For example, DateTime.MinValue is outside the accepted range for SQL Server datetime values by about 1600 years.
By the way, you shouldn't be using ODBC for C# to SQL Server communication. Using System.Data.SqlClient will give you much better performance.
.NET DateTime 对象的范围比 SQL 日期/时间字段更大。
在数据访问层中,每当将日期写入数据库时,请确保其在 SqlDateTime.MinValue 和 SqlDateTime.MaxValue 的速率范围内。
The .NET DateTime object has a bigger range than the SQL date/time field.
In your data access layer, anytime your writing a date to the database, ensure that is inside the rate of SqlDateTime.MinValue and SqlDateTime.MaxValue.
我很确定,您的 .NET DateTime 未初始化,这意味着它是“0000-01-01”,这不是 SQL Server DATETIME 的有效值,并且通常不是所需的值; -)
I'm quiet sure, your .NET DateTime is not initialized, what means it is "0000-01-01" and this is not a valid value for SQL Server DATETIME and often not a desired value ;-)
将所有日期时间列更改为 datetime2 类型。使用下面的查询生成 sql 脚本。
Change all your datetime columns to datetime2 type. Generate the sql scripts using the query below.