C# 无限期DateTime到SqlDateTime

C# 无限期DateTime到SqlDateTime,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,我在SQLServerManagementStudio中使用了SQL语句,在那里我输入了以下日期时间{ts'9999-12-31 23:59:59'}作为无限有效性,但当我尝试通过SQLSconnection&SqlCommand(服务器响应)执行此操作时,我发现此日期时间转换超出范围。。。有没有办法不出错地得到这个 提前非常感谢您我认为您应该使用SqlDateTime.MaxValue来实现这一点 资料来源: 另一种方法是在SQL中将此变量声明为可选变量,并在其中分配日期时间。这样,您就不需要

我在SQLServerManagementStudio中使用了SQL语句,在那里我输入了以下日期时间{ts'9999-12-31 23:59:59'}作为无限有效性,但当我尝试通过SQLSconnection&SqlCommand(服务器响应)执行此操作时,我发现此日期时间转换超出范围。。。有没有办法不出错地得到这个


提前非常感谢您

我认为您应该使用
SqlDateTime.MaxValue
来实现这一点

资料来源:

另一种方法是在SQL中将此变量声明为可选变量,并在其中分配日期时间。这样,您就不需要担心框架更改或其他任何事情

ALTER PROCEDURE  [dbo].[YourProcedure]
@Date datetime = '9999-12-31 23:59:59';

通过这种方式,无论何时您实际上没有传递值,它都将是您想要的,不会出现任何问题。

我认为您应该使用
SqlDateTime.MaxValue
这样做

资料来源:

另一种方法是在SQL中将此变量声明为可选变量,并在其中分配日期时间。这样,您就不需要担心框架更改或其他任何事情

ALTER PROCEDURE  [dbo].[YourProcedure]
@Date datetime = '9999-12-31 23:59:59';

通过这种方式,只要您没有实际传递该值,它就会按照您的要求毫无问题地传递。

SQL Server日期时间值的最大值是9999-12-31 23:59:59.997-请注意,它以7结尾

这个代码运行良好

declare @MaxDateTime datetime; set @MaxDateTime = '9999-12-31 23:59:59.997'
本守则不适用于:

declare @MaxDateTime datetime; set @MaxDateTime = '9999-12-31 23:59:59.999'
如果您想知道为什么最大值以7结尾,那是因为SQL Server在内部存储日期时间值的方式

希望这有帮助


Rhys

SQL Server日期时间值的最大值为9999-12-31 23:59:59.997-请注意,它以7结尾

这个代码运行良好

declare @MaxDateTime datetime; set @MaxDateTime = '9999-12-31 23:59:59.997'
本守则不适用于:

declare @MaxDateTime datetime; set @MaxDateTime = '9999-12-31 23:59:59.999'
如果您想知道为什么最大值以7结尾,那是因为SQL Server在内部存储日期时间值的方式

希望这有帮助


Rhys

为什么不在“无限”的情况下使用
NULL
?实际上这不是我的想法,它是很久以前开发的,在所有其他过程中都不匹配--为什么不在“无限”的情况下使用
NULL
?实际上这不是我的想法,它是很久以前开发的,在所有其他流程中都不匹配-非常感谢,这听起来非常棒,我会尽快检查它!非常感谢,这听起来很不错,我会尽快检查的!