SQL Server函数返回最小date(1753年1月1日)

我正在寻找一个SQL Server函数来返回datetime的最小值,即1753年1月1日。我宁愿不将该date值硬编码到我的脚本。

有这样的事吗? (为了比较,在C#中,我可以做DateTime.MinValue)或者我必须自己写这个?

我正在使用Microsoft SQL Server 2008 Express。

你可以编写一个用户定义函数来返回最小date值,如下所示:

 select cast(-53690 as datetime) 

然后在你的脚本中使用这个函数,如果你需要改变它,只有一个地方可以做到这一点。

或者,您可以使用此查询,如果您喜欢它,以获得更好的可读性:

 select cast('1753-1-1' as datetime) 

示例函数

 create function dbo.DateTimeMinValue() returns datetime as begin return (select cast(-53690 as datetime)) end 

用法

 select dbo.DateTimeMinValue() as DateTimeMinValue DateTimeMinValue ----------------------- 1753-01-01 00:00:00.000 

你见过SqlDateTime对象吗? 使用SqlDateTime.MinValue来获取最小date(1753年1月1日)。

由于我不能评论接受的答案,由于不足声望点我的评论来作为答复。

如果在区域设置不接受YYYY-MM-DD格式的datestring的数据库上运行,则使用select cast('1753-1-1' as datetime)将导致失败。

而是使用select cast(-53690 as datetime) Convert select cast(-53690 as datetime)或使用指定的date时间格式Convert

inputdate作为本地值'yyyymmdd'以避免区域性问题:

 select cast('17530101' as datetime) 

是的,如果TSQL有MinDate() = '00010101'MinDate() = '00010101' ,但没有这样的运气。

这不是1753年1月1日,但是selectcast(''as datetime)显示:1900-01-01 00:00:00.000给出了SQL服务器的默认值。 (无论如何,看起来对我来说更加未初始化)

datetime的范围不会改变,因为这将打破向后兼容性。 所以你可以硬编码。