L doesn't seem to be working in to_char()
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
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
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
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