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

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

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する