postgresql: epoch to timestamp?

Karel Zak zakkr na zf.jcu.cz
Středa Březen 16 08:50:32 CET 2005


On Mon, 2005-03-14 at 09:06 +0100, Zdenek Prchal wrote:
> > 
> > CAST(12345678||'s' AS interval)  :-)
> > 
> > > (kterou zatim nemam), jsem posleze nasel tuto konstrukci:
> > >  
> > >  timestamp 'epoch' + unixts * interval '1 second'
> > > 
> > > protoze timestamp 'epoch' a interval '1 seconds' jsou
> > > konstanty, melo by to byt dostatecne rychle ...
> > 
> > Nemyslim. Oboje je parsovano a interne konvertovano na 
> > prislusne datove
> > typy.
> > 
> Hmm, no ja mevim. Protoze (v mem pripade) ten udaj bude
> pole tabulky a ten vyraz se bude provadet pro celou tabulku,

Ja to myslel v tom smyslu, ze ty konstanty jsou brany jako neco "jineho"
co by melo byt v pretypovani rychlejsi. Jinak mate asi pravdu a urcite
je ta vase varianta elegantnejsi. Ja jen chtel ukazat, ze int->interval
jde nejak udelat.

> tak ale v prvnim pripade (nahore) se konverze pres string 
> bude provadet pro kazdy radek, kdezto ve druhem pripade
> se ta konverze ze stringu na prislusne datove udaje snad
> provede jen jednou nebo se mylim?

Stejne se nevyhnete pretypovavani na kazdem radku. Co jsem se koukal tak
interval * <cislo> je implementovane jako interval * float8 takze se
pretypuje ten sloupecek 'unixts' pak se provede nasobeni a secteni
vysledneho intervalu s time epoch timestampem -- to znamena volani
alespon tri funkci. V pripade toho castu na string to bude o jednu
oparaci vice (ten operator || ).

Jak je to doopravdy a jak moc kecam vam ukaze EXPLAIN VERBOSE.

	Karel

-- 
Karel Zak <zakkr na zf.jcu.cz>



Další informace o konferenci Test