Index: src/backend/utils/adt/formatting.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/formatting.c,v retrieving revision 1.72 diff -c -c -r1.72 formatting.c *** src/backend/utils/adt/formatting.c 7 Jan 2004 18:56:28 -0000 1.72 --- src/backend/utils/adt/formatting.c 29 Mar 2004 18:16:26 -0000 *************** *** 169,175 **** * AC / DC * ---------- */ ! #define YEAR_ABS(_y) (_y < 0 ? -(_y -1) : _y) #define BC_STR_ORIG " BC" #define A_D_STR "A.D." --- 169,175 ---- * AC / DC * ---------- */ ! #define YEAR_ABS(_y) (_y <= 0 ? -(_y -1) : _y) #define BC_STR_ORIG " BC" #define A_D_STR "A.D." *************** *** 2119,2125 **** case DCH_B_C: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year < 0 ? B_C_STR : A_D_STR)); return 3; } --- 2119,2125 ---- case DCH_B_C: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year <= 0 ? B_C_STR : A_D_STR)); return 3; } *************** *** 2134,2140 **** case DCH_BC: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year < 0 ? BC_STR : AD_STR)); return 1; } --- 2134,2140 ---- case DCH_BC: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year <= 0 ? BC_STR : AD_STR)); return 1; } *************** *** 2149,2155 **** case DCH_b_c: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year < 0 ? b_c_STR : a_d_STR)); return 3; } --- 2149,2155 ---- case DCH_b_c: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year <= 0 ? b_c_STR : a_d_STR)); return 3; } *************** *** 2164,2170 **** case DCH_bc: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year < 0 ? bc_STR : ad_STR)); return 1; } --- 2164,2170 ---- case DCH_bc: if (flag == TO_CHAR) { ! strcpy(inout, (tm->tm_year <= 0 ? bc_STR : ad_STR)); return 1; } Index: src/backend/utils/adt/timestamp.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/timestamp.c,v retrieving revision 1.102 diff -c -c -r1.102 timestamp.c *** src/backend/utils/adt/timestamp.c 22 Mar 2004 01:38:17 -0000 1.102 --- src/backend/utils/adt/timestamp.c 29 Mar 2004 18:16:28 -0000 *************** *** 3261,3267 **** break; case DTK_YEAR: ! result = tm->tm_year; break; case DTK_DECADE: --- 3261,3271 ---- break; case DTK_YEAR: ! if (tm->tm_year > 0) ! result = tm->tm_year; ! else ! /* there is no year 0, just 1 BC and 1 AD*/ ! result = tm->tm_year - 1; break; case DTK_DECADE: