PostgreSQL a LC_TIME

Otakar Kleps kleps na avonet.cz
Středa Duben 6 09:19:08 CEST 2005


Karel Zak wrote:
> On Mon, 2005-04-04 at 20:57 +0200, Jan Kasprzak wrote:
> 
>>Honza Pazdziora wrote:
>>: On Fri, Apr 01, 2005 at 09:37:36PM +0200, Jan Kasprzak wrote:
>>: > 
>>: > muzu nejak ovlivnit chovani funkce to_char(timestamp, fmt) podle
>>: > pozadovane lokalizace? At uz nejakym SQL prikazem nebo promennou
>>: > prostredi na klientovi. Ne pri vytvareni databaze jako globalni vec,
>>: > ale pro kazdeho klienta zvlast. Chapu ze u kodovani a trideni
>>: > to nejde, ale u formatu casu by to jit mohlo. Jde to?
>>: 
>>: No, pokud nic nenajdes a nebudes si chtit napsat vlastni funkci, kde
>>: to bude natvrdo, a budes mit porad pocit, ze chces, aby Ti tohle delal
>>: databazovy server (misto prezentacni vrstvy, nebo tak), a budes to
>>: chtit delat pomoci locales (uz z teto rady podminek plyne, ze dost
>>: pochybuji o uzitecnosti takove funkce ;-) asi se muzes inspirovat
>>: v tom zminenem razeni podle uzivatelsky volenych locales,
>>: 
>>: 	http://www.fi.muni.cz/~adelton/l10n/#postgresql-nls-string
>>
>>	No, hlavne mi prijde, ze pokud z databaze leze datum
>>jako string podle locale te databaze, tak s tim uz vubec nemuzu nic delat.
> 
> 
> Temer vse z/do databaze je string.
> 
> 
>>Takze kdyz uz na ta data musim v databasi sahat, tak proc ne rovnou
>>do cilove podoby? 
> 
> 
> Protoze to nemusi byt snadne. DB potrebuje pro svuj beh nejake presne
> definovane locales v kterych ma indexy. Prepinani mezi ruznymi locales
> podle potreb (ruzne indexy, ruzne formatovane vystupy apod.) je neco co
> neni implementovane (protoze to vubec neni trivialni). Ono myslet si, ze
> zavolam setlocale() milionkrat za jeden SQL dotaz je proste blby
> napad... :-)

Trosku z jineho soudku - v tom pripade me zajima, proc to co oznacujes 
za "blby napad" ma v sobe postgres pravdepodobne implemnentovano prave 
pri praci s casem. Neni totiz jedno, kdyz napisu podminku 
_date=CURRENT_DATE a nebo _date='2005-04-06'::date(kde _date je typ date).

Obecne dle 'explain analyze' je vyhodnejsi pouzit prave ten druhy zpusob 
zapisu. Me totiz prijde, ze pri vyhodnoceni podminky dotazu si PG pro 
kazdy vyhodnocovany zaznam generuje aktualni CURRENT_DATE a ten pak 
pouzije. Proc tomu tak je?
--
Ota Kleps


>>Samozrejme systemovejsi by bylo, kdybych mohl databazi
>>(DBD::Pg, libpg nebo komu) rict at mi vraci vsechny casy jako pocet
>>sekund od epochy (aniz bych se s tim musel v kazdem selectu vypisovat
>>a myslet na to). Ale jde mi o to jak to udelat aniz bych musel na toto
>>nejak zvlast myslet. Pokud uz budu muset volat v kazdem selectu funkci,
>>tak to uz rovnou zvolim konverzi do prezentacniho formatu.
> 
> 
>  Pokud lze na backendu tu konverzi provadet tak ano. V tomto pripade to
> to nelze. 
> 
> 	Karel


Další informace o konferenci Test