gpt4 book ai didi

c# - 系统.Data.SqlTypes.SqlTypeException : SqlDateTime overflow

转载 作者:太空狗 更新时间:2023-10-29 22:21:05 28 4
gpt4 key购买 nike

我正在使用 C#.net 和 SQL Server 2008。

尝试在我的项目中运行测试单元时出现以下错误。

   System.Data.SqlTypes.SqlTypeException:
SqlDateTime overflow. Must be between
1/1/1753 12:00:00 AM and 12/31/9999
11:59:59 PM..

数据库表

Column Name: createddate 
Type: datetime
Default Value: (getdate())
Allow Nulls: No.

我不想将 createddate 作为我的 INSERT 查询的一部分插入。

当我手动向数据库表中输入一些数据时,出现以下错误:

   The row was successfully committed
to the database. However, a problem
occurred when attempting to retrieve
the data back after commit. Because
of this the displayed data within the
row is read-only. To fix this
problem, please re-run the query.

我不明白为什么我会收到这个错误,也找不到遇到过这个问题的人。谁能帮忙?

最佳答案

马特很可能走在正确的道路上。您已经为您的列定义了一个默认值 - 但是,只有当您实际在数据库的表中插入某些内容时,该默认值才会生效。

当您进行单元测试时,如您所说,您很可能将 DateTime 变量初始化为某个值(或不初始化 - 那么它将是 DateTime.MinValue,即 01/01/0001),然后将其发送到SQL Server 并且此值超出了 SQL Server 上 DATETIME 的有效范围(正如错误明确指出的那样)。

所以您需要做的是在 .NET 单元测试中添加一行,以将 DateTime 变量初始化为“DateTime.Today”:

DateTime myDateTime = DateTime.Today

然后将其插入到 SQL Server 中。

或者:您可以更改您的 SQL INSERT 语句,这样它就不会为该列插入一个值 - 现在看起来,它确实这样做了(并尝试将那个 - 对于 SQL Server - 无效日期插入到表中).如果您未在 INSERT 中指定该列,则 getdate() 的列默认值将启动并将今天的日期插入该列。

马克

关于c# - 系统.Data.SqlTypes.SqlTypeException : SqlDateTime overflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com