mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
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
This commit is contained in:
parent
ce7746201b
commit
dbf2fd2e0f
@ -1,7 +1,7 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
* 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
|
||||
@ -1258,14 +1258,17 @@ static char *
|
||||
get_th(char *num, int type)
|
||||
{
|
||||
int len = strlen(num),
|
||||
last;
|
||||
last, seclast;
|
||||
|
||||
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')
|
||||
/*
|
||||
* 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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user