PostgreSQL a LC_TIME

Jan Kasprzak kas na fi.muni.cz
Středa Duben 6 14:40:41 CEST 2005


Karel Zak wrote:
: > 	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.
: 
	OK.

: > 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... :-)

	Ja myslim ze staci jednou za session (ALTER SESSION ...).
Nerikej mi ze u datumu jsou nejake indexy zavisle na locale :-)

	Jinak ale moje citovana poznamka (proc ne rovnou do cilove
podoby?) byla mirena na Adeltonuv nazor, ze by tohle mela delat prezentacni
vrstva. Ano, mohla by, ale to bych musel od datove vrstvy dostavat
to datum v nejakem snadno zpracovatelnem formatu. Coz nemam. Takze dalsi
krok je zkusit toto delat primo v databazi.
: 
: > 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. 

	Lze - napriklad pres plPerl, nebo i jen pomoci CASE..WHEN
pro prevod cisla mesice na cesky nazev.

	No, jeste jsem premyslel o jine variante - vykaslat se na vsechny
interni postgresovske metody zpracovani casu, mit sloupce typu
64-bitovy integer s nulou v okamziku epochy, misto zmeneno=current_timestamp
v triggerech nastavovat zmeneno=extract(epoch from current_timestamp)
a konverzi na citelny format delat skutecne az v prezentacni vrstve.

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
> Whatever the Java applications and desktop dances may lead to, Unix will <
> still be pushing the packets around for a quite a while.      --Rob Pike <


Další informace o konferenci Test