Pages

2013/08/24

[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 日 」の範囲となる。

歴史的な背景を知るとなかなか興味深い。

Related Posts Plugin for WordPress, Blogger...