Commit dbf2fd2e authored by Bruce Momjian's avatar Bruce Momjian

The enclosed patch changes the behaviour of the "ordinal" ('TH') format for

to_char.  I don't know about the rest of the world, but the "standard" in
Australia is the following:

        1st, 2nd, 3rd, 4th - 9th
        10th - 19th
        21st, 22nd, 23rd, 24th - 29th (similarly for 30s - 90s)
        110th - 119th (and for all "teens")
        121st, 122nd, 123rd, 124th - 129th

I think you see the trend.  The current code works fine except that it
produces:

        111st, 112nd, 113rd, 114th - 119th
        211st, 212nd, 213rd, 214th - 219th ... and so on.

Without knowing anything about what's supported (and what isn't) in the usual
I18N libraries, should this type of behaviour be defined within the locales?

Daniel Baldoni
parent ce774620
/* ----------------------------------------------------------------------- /* -----------------------------------------------------------------------
* formatting.c * formatting.c
* *
* $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.10 2000/06/09 01:11:08 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.11 2000/06/09 03:18:34 momjian Exp $
* *
* *
* Portions Copyright (c) 1999-2000, PostgreSQL, Inc * Portions Copyright (c) 1999-2000, PostgreSQL, Inc
...@@ -1258,14 +1258,17 @@ static char * ...@@ -1258,14 +1258,17 @@ static char *
get_th(char *num, int type) get_th(char *num, int type)
{ {
int len = strlen(num), int len = strlen(num),
last; last, seclast;
last = *(num + (len - 1)); last = *(num + (len - 1));
if (!isdigit((unsigned char) last)) if (!isdigit((unsigned char) last))
elog(ERROR, "get_th: '%s' is not number.", num); elog(ERROR, "get_th: '%s' is not number.", num);
/* 11 || 12 */ /*
if (len == 2 && (last == '1' || last == '2') && *num == '1') * All "teens" (<x>1[0-9]) get 'TH/th',
* while <x>[02-9][123] still get 'ST/st', 'ND/nd', 'RD/rd', respectively
*/
if ((len > 1) && ((seclast = num[len-2]) == '1'))
last = 0; last = 0;
switch (last) switch (last)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment