I have applied a patch to fix the issues mentioned below. Thanks. ---------------------------------------------------------------------------
Karel Zak wrote: > On Fri, Dec 19, 2003 at 01:12:08AM -0800, Dann Corbit wrote: > > There is no zero calendar year. The first year of Anno Domini is 1. It's > > ordinal, not cardinal. > > I agree. But the follow quoted code is not use in date_part() there > Kurt found bug. It's used in to_timestamp() _only_, and it works, > because tm2timestamp() and date2j() work with zero year. > > > > Is there connection between formatting.c and date_part() ? > > > I don't think so... > > > > > > > In backend/utils/adt/formatting.c: > > > > > > > > if (tmfc.bc) > > > > { > > > > if (tm->tm_year > 0) > > > > tm->tm_year = -(tm->tm_year - 1); > > > ... "tm->tm_year = -(tm->tm_year - 1)" is used for: > > # select to_timestamp('0001/01/01 BC', 'YYYY/MM/DD AD'); > to_timestamp > ------------------------ > 0001-01-01 00:00:00 BC > > and it's OK. > > > I think a bug is somewhere in timestamp2tm() which used in next > examples and it's shared between more functions: > > # select to_char('0001-01-01 BC'::date, 'YYYY/MM/DD AD'); > to_char > --------------- > 0000/01/01 AD > > # SELECT EXTRACT(YEAR from '0001-01-01 BC'::date); > date_part > ----------- > 0 > > > Karel > > > > -- > Karel Zak <[EMAIL PROTECTED]> > http://home.zf.jcu.cz/~zakkr/ > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to [EMAIL PROTECTED] so that your > message can get through to the mailing list cleanly > -- 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 8: explain analyze is your friend