[postgresql] to_char : dziwne dzialanie formatowania
koval - 12-09-2006 01:00
[postgresql] to_char : dziwne dzialanie formatowania
postgres 8.1.4 :
select to_char(12345678.99,'999G999G999D99'); to_char ----------------- 12,345,678,99 (1 row)
dlaczego decimal separator i group separator sa takie same ???
- 12-09-2006 01:00
koval napisał(a): > postgres 8.1.4 : > > select to_char(12345678.99,'999G999G999D99'); > to_char > ----------------- > 12,345,678,99 > (1 row) > > dlaczego decimal separator i group separator sa takie same ???
Dlatego, ze w Twoim systemie znak decimal to przecinek.
Pozdrawiam.
koval - 12-09-2006 01:00
<> wrote: > koval napisał(a): >> postgres 8.1.4 : >> >> select to_char(12345678.99,'999G999G999D99'); >> to_char >> ----------------- >> 12,345,678,99 >> (1 row) >> >> dlaczego decimal separator i group separator sa takie same ??? > > Dlatego, ze w Twoim systemie znak decimal to przecinek. > > Pozdrawiam. postgresql kompilowany ze zrodel, z opcja --enable-locale, co jeszcze trzeba zrobic, moze o czyms nie wiem ?
koval - 12-09-2006 01:00
dodam jeszcze, ze przeszukiwanie google z ciekawszych rzeczy dalo tylko to:
http://tiny.pl/7pm1
, watek jest z 2004 roku, nie chce mi sie wierzyc ze nadal nie jest to naprawione (?)
koval - 12-09-2006 01:00
i jeszcze raz sobie odpowiem - wydaje sie ze problemem jest nie to, ze w moim systemie znakiem separatora grup jest przecinek, tylko to ze go wcale nie ma! :
bash-3.00$ locale -k LC_NUMERIC
decimal_point="," thousands_sep="" grouping=-1;-1 numeric-decimal-point-wc=44 numeric-thousands-sep-wc=0 numeric-codeset="ISO-8859-2"
teraz tylko pytanie jak to zmienic ??? :)
Paweł Matejski - 12-09-2006 01:00
koval wrote: > i jeszcze raz sobie odpowiem - wydaje sie ze problemem jest nie to, ze w > moim systemie znakiem separatora grup jest przecinek, tylko to ze go > wcale nie ma! : > > bash-3.00$ locale -k LC_NUMERIC > > decimal_point="," > thousands_sep="" > grouping=-1;-1 > numeric-decimal-point-wc=44 > numeric-thousands-sep-wc=0 > numeric-codeset="ISO-8859-2" > > teraz tylko pytanie jak to zmienic ??? :)
madej=> SHOW lc_numeric ; lc_numeric ------------ pl_PL (1 row)
madej=> select to_char(12345678.99,'999G999G999D99'); to_char ----------------- 12,345,678,99 (1 row)
madej=> set lc_numeric = 'en_US'; SET madej=> select to_char(12345678.99,'999G999G999D99'); to_char ----------------- 12,345,678.99 (1 row)
Wygląda na to, że to_char źle interpretuje brak znaku 'grouping'.
Po małej edycji locali można uzyskać coś takiego:
madej=> SHOW lc_numeric ; lc_numeric ------------ pl_PL (1 row)
madej=> select to_char(12345678.99,'999G999G999D99'); to_char ----------------- 12 345 678,99 (1 row)
Z tym, że z moich prób wynika, że bawić się trzeba localami na serwerze. Choć klienta i serwer mam na tym samym komputerze, to pozwolił ustawić en_US jak i uwzględniał zmiany w localach, dopiero po restarcie serwera.
P.S. Bawiłem sie na debianie etch.
-- P.M.
Bartek Siebab - 13-09-2006 02:06
> Paweł Matejski w dniu 2006-09-11 17:31 pisze: > koval wrote: >> i jeszcze raz sobie odpowiem - wydaje sie ze problemem jest nie to, ze w >> moim systemie znakiem separatora grup jest przecinek, tylko to ze go >> wcale nie ma! : >> >> bash-3.00$ locale -k LC_NUMERIC >> >> decimal_point="," >> thousands_sep="" >> grouping=-1;-1 >> numeric-decimal-point-wc=44 >> numeric-thousands-sep-wc=0 >> numeric-codeset="ISO-8859-2"
tak samo na Fedora 5
> Z tym, że z moich prób wynika, że bawić się trzeba localami na serwerze. Choć > klienta i serwer mam na tym samym komputerze, to pozwolił ustawić en_US jak i > uwzględniał zmiany w localach, dopiero po restarcie serwera. > > P.S. Bawiłem sie na debianie etch. >
identycznie jest na Fedora 5 -> postgres źle traktuje LC_NUMERIC gdy separatora tysięcy nie ma -> czyżby bug? czy też taki feczer...
-- ..---------- -------- ------ ---- ---- --- - -- - | Bartek `saphire` Siebab http://bartek.siebab.net
koval - 14-09-2006 00:09
Bartek Siebab wrote: > > Paweł Matejski w dniu 2006-09-11 17:31 pisze: >> koval wrote: >>> i jeszcze raz sobie odpowiem - wydaje sie ze problemem jest nie to, ze w >>> moim systemie znakiem separatora grup jest przecinek, tylko to ze go >>> wcale nie ma! : >>> >>> bash-3.00$ locale -k LC_NUMERIC >>> >>> decimal_point="," >>> thousands_sep="" >>> grouping=-1;-1 >>> numeric-decimal-point-wc=44 >>> numeric-thousands-sep-wc=0 >>> numeric-codeset="ISO-8859-2" > > tak samo na Fedora 5 > >> Z tym, że z moich prób wynika, że bawić się trzeba localami na >> serwerze. Choć >> klienta i serwer mam na tym samym komputerze, to pozwolił ustawić >> en_US jak i >> uwzględniał zmiany w localach, dopiero po restarcie serwera. >> >> P.S. Bawiłem sie na debianie etch. >> > > identycznie jest na Fedora 5 -> postgres źle traktuje LC_NUMERIC gdy > separatora tysięcy nie ma -> czyżby bug? czy też taki feczer... > coz, postgres jak widac w przypadku braku separatora tysiecznego posluguje sie separatorem dziesietnym ... to raczej feature ;)
natomiast ciekawe dlaczego tak jest w samym systemie - to samo zaobserwowalem na gentoo i slackware ... dziwne, prawda ? W takim de_DE wszystko jest cacy, a juz w pl_PL nie. Ktos zapomnial, czy to celowe dzialanie ?
koval - 11-11-2006 00:51
gdyby ktos chcial zmieniac w systemuie to pomocny moze byc link: http://gentoo-wiki.com/HOWTO_localedef#Using_localedef
oczywiscie nie zmieniamy formatu wyswietlania daty a jedynie definicje w bloku LC_NUMERIC :
LC_NUMERIC decimal_point "<U002C>" thousands_sep "<U002E>" grouping 3;3 END LC_NUMERIC
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plmelooonka.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|