SQL Server 2008 日期时间字段溢出

发布于 2024-09-11 04:01:16 字数 538 浏览 12 评论 0原文

我正在使用 C# 与 SQL 数据库交互。数据库有一个日期时间字段。当我尝试从 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

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:

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

Is there any manipulation I can do to my DateTime object on the C# side?

EDITS
I am trying to add DateTime.MinValue

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

自此以后,行同陌路 2024-09-18 04:01:16

听起来你刚刚经历了一次糟糕的约会。例如,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.

深居我梦 2024-09-18 04:01:16

.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.

神爱温柔 2024-09-18 04:01:16

我很确定,您的 .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 ;-)

掀纱窥君容 2024-09-18 04:01:16

将所有日期时间列更改为 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';

Change all your datetime columns to datetime2 type. Generate the sql scripts using the query below.

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';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文