Kurt Roeckx wrote: > 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?
Uh, well, yea, there was no year 0. However, it seems we should return the proper year. My guess is that missing year 0 is the cause, and there are certain reasons year 2 BC should return -1. If you are subtracting dates, like 32AD - 4BC, you get 35, which is the proper number of years spanned. I am not sure what is the proper answer. I thought date_part just grabbed "parts of the date" like it says, but obviously not, and there are some good reasons for it, I guess. -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match