[SQL Server] datetime 型は、なぜ 1753 年が下限なのか。
SQL Server の datetime 型は、1753 年 1 月 1 日から 9999 年 12 月 31 日までの日付範囲を持つ。従って、以下のような変換はエラーとなる。 DECLARE @d DATETIME = CONVERT(DATETIME,'1752') -- varchar データ型から datetime データ型への変換の結果、範囲外の値になりました。 では、なぜ 1753 年から開始なのか。 それは datetime 型が「グレゴリオ暦」であることに起因している。 当時のイギリス帝国 (とその植民地) でグレゴリオ暦を採用した年が 1752 年であり、 通年としてグレゴリオ暦が始まったのが 1753 年からだからである。 グレゴリオ暦 (Wikipedia) SQL Server 2008 からは dateime2 型が導入され、この型は 「西暦 1 年 1 月 1 日から西暦 9999 年 12 月 31 日 」の範囲となる。 歴史的な背景を知るとなかなか興味深い。