rubyとPostgresqlと日付

Postgeesql では日付は

  • 4xxx-01-01 BC
  • 0001-12-31 BC
  • 0001-01-01 AD
  • 9999-12-31 AD

のようになっている。

一方、RubyのDateでは

  • -9999-01-01
  • -0001-12-31
  • 0000-01-01
  • 9999-12-31

のようになっている。

このクラスでは、紀元前の年を天文学の流儀で勘定します。 1年の前は零年、零年の前は-1年、のようにします。

ので、 Rubyで 0000年となるような日付をそのままPostgresqlで利用しようとすると

ERROR:  date/time field value out of range: "0000-01-01"

が出ます。

気を付けましょう。

という話