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
的范围不会改变,因为这将打破向后兼容性。 所以你可以硬编码。