I find this a little strange:
select date_part('year', '0002-01-01 BC'::date);
date_part
-----------
-1
It seems 1 BC and 0 are the same year.
In backend/utils/adt/formatting.c:
if (tmfc.bc)
{
if (tm->tm_year > 0)
tm->tm_year = -(tm->tm_year - 1);
It this normal or a bug?
Kurt