使用1753年1月1日的决定(1753-01-01
),因为SQLServer中日期时间的最小日期值可以追溯到它的Sybase起源.
然而,日期本身的意义可以归因于这个人。
菲利普·斯坦霍普,切斯特菲尔德伯爵四世。谁指挥了1750年日历(新式样)法通过英国议会。这为英国及其殖民地采用公历制定了法律。
有一些失踪日在1752年的英国历法中,这一调整最终是从朱利安历法中做出的。1752年9月3日至1752年9月13日。
卡伦·德莱尼解释这样的选择
那么,在损失了12天的情况下,你如何计算日期呢?例如,如何计算1492年10月12日至1776年7月4日之间的天数?你包括那些失踪的12天吗?为了避免不得不解决这个问题,最初的Sybase SQL Server开发人员决定不允许1753之前的日期。您可以通过使用字符字段来存储较早的日期,但不能使用任何日期时间函数来存储在字符字段中的较早日期。
1753年的选择确实有点以英国为中心,然而许多天主教国家在欧洲,在英国实施之前,这个日历已经使用了170年(最初是由于反对而推迟的)。在教堂旁边)。相反,许多国家直到1918年在俄罗斯才改革他们的日历。事实上,1917年的十月革命是在公历下于11月7日开始的。
双管齐下datetime
和新的datetime2
中提到的数据类型乔的回答不要试图解释这些本地差异,而只是使用GregorianCalendar。
所以在更大范围内datetime2
SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)
回报
Sep 8 1752 12:00AM
最后一点datetime2
数据类型是它使用前阳历倒映到它实际上发明之前,所以在处理历史日期方面的作用是有限的。
这与其他软件实现(如Java)形成对比公历类,该类的默认日期为遵循朱利安日历,直到1582年10月4日,然后在新的公历中跳到1582年10月15日。它正确地处理了那个日期之前的闰年的朱利安模型和那个日期之后的格里高利模型。调用方可以通过调用更改转换日期。setGregorianChange()
.
一篇相当有趣的文章,讨论了日历通过后的一些更多的特点。可以在这里找到.