Ordinal suffix behaviour - Mailing list pgsql-patches
From | Daniel Baldoni |
---|---|
Subject | Ordinal suffix behaviour |
Date | |
Msg-id | 394009b1$0$13733@motown.iinet.net.au Whole thread Raw |
Responses |
Re: Ordinal suffix behaviour
Re: Ordinal suffix behaviour |
List | pgsql-patches |
G'day folks, 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? *** src/backend/utils/adt/formatting.c.orig Fri Jun 9 04:33:30 2000 --- src/backend/utils/adt/formatting.c Fri Jun 9 04:35:48 2000 *************** *** 1258,1271 **** get_th(char *num, int type) { int len = strlen(num), ! last; last = *(num + (len - 1)); if (!isdigit((unsigned char) last)) elog(ERROR, "get_th: '%s' is not number.", num); ! /* 11 || 12 */ ! if (len == 2 && (last == '1' || last == '2') && *num == '1') last = 0; switch (last) --- 1258,1274 ---- get_th(char *num, int type) { int len = strlen(num), ! last, seclast; last = *(num + (len - 1)); if (!isdigit((unsigned char) last)) elog(ERROR, "get_th: '%s' is not number.", num); ! /* ! * 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; switch (last) -------------------------------------------------------+--------------------- Daniel Baldoni BAppSc, PGradDipCompSci | Technical Director require 'std/disclaimer.pl' | LcdS Pty. Ltd. -------------------------------------------------------+ 856B Canning Hwy Phone/FAX: +61-8-9364-8171 | Applecross Mobile: 041-888-9794 | WA 6153 URL: http://www.lcds.com.au/ | Australia -------------------------------------------------------+--------------------- "Any time there's something so ridiculous that no rational systems programmer would even consider trying it, they send for me."; paraphrased from "King Of The Murgos" by David Eddings. (I'm not good, just crazy)
pgsql-patches by date: