L doesn't seem to be working in to_char()

Started by Bill Moranabout 22 years ago4 messagesgeneral
Jump to latest
#1Bill Moran
wmoran@potentialtech.com

The user guide says that L should produce the currency symbol as defined
by the locale. It doesn't seem to be working for me.

agelis=# select to_char(1257.5, 'LFM999G999G999G999D99');
to_char
----------
1,257.5
(1 row)

Can anyone confirm that this is a problem, or have I made a mistake
somewhere? I'm running 7.4.1 on FreeBSD.

--
Bill Moran
Potential Technologies
http://www.potentialtech.com

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bill Moran (#1)
Re: L doesn't seem to be working in to_char()

Bill Moran <wmoran@potentialtech.com> writes:

The user guide says that L should produce the currency symbol as defined
by the locale. It doesn't seem to be working for me.

Are you sure your locale defines one? AFAICT, C locale doesn't. The
to_char code seems to fall back to using a blank if there's no currency
symbol available from localeconv().

regards, tom lane

#3Bruce Momjian
bruce@momjian.us
In reply to: Bill Moran (#1)
Re: L doesn't seem to be working in to_char()

Bill Moran wrote:

The user guide says that L should produce the currency symbol as defined
by the locale. It doesn't seem to be working for me.

agelis=# select to_char(1257.5, 'LFM999G999G999G999D99');
to_char
----------
1,257.5
(1 row)

Can anyone confirm that this is a problem, or have I made a mistake
somewhere? I'm running 7.4.1 on FreeBSD.

I got it working on FreeBSD 4.9. The fix was to set lc_monetary
properly:

template1=# set lc_monetary = 'en_US.ISO8859-1';
SET
template1=# select to_char(1257.5, 'LFM999G999G999G999D99');
to_char
----------
$1,257.5
(1 row)

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#4Bill Moran
wmoran@potentialtech.com
In reply to: Bruce Momjian (#3)
Re: L doesn't seem to be working in to_char()

Bruce Momjian wrote:

Bill Moran wrote:

The user guide says that L should produce the currency symbol as defined
by the locale. It doesn't seem to be working for me.

agelis=# select to_char(1257.5, 'LFM999G999G999G999D99');
to_char
----------
1,257.5
(1 row)

Can anyone confirm that this is a problem, or have I made a mistake
somewhere? I'm running 7.4.1 on FreeBSD.

I got it working on FreeBSD 4.9. The fix was to set lc_monetary
properly:

template1=# set lc_monetary = 'en_US.ISO8859-1';
SET
template1=# select to_char(1257.5, 'LFM999G999G999G999D99');
to_char
----------
$1,257.5
(1 row)

Yup, that's fixes it for me as well. I'm guessing the reason this
works is contained in Tom's reply about the default 'C' locale not
having a monetary designator.

Thanks, Bruce.

--
Bill Moran
Potential Technologies
http://www.potentialtech.com