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"
が出ます。
気を付けましょう。
という話