timestamp v posgresql

Radek Kanovsky rk na dat.cz
Čtvrtek Červenec 18 11:58:26 CEST 2002


On Thu, Jul 18, 2002 at 11:45:36AM +0200, Karel Zak wrote:

> > > Zdravim,
> > > mam tabulku a v ni cas ve formatu unix timestapm (pocet vterin od
> > > 1.1.1970), s datovym typem integer.
> > > Normalne to v te aplikaci parsuju na urovni aplikace, nicmene ted
> > > potrebuji udelat sql dotaz primo na konzoli a nemohu najit potrebnou
> > > funkci v pgsql. Existuje, nebo ma ji nekdo vytvorenou?
> > 
> > Uz jsem to resil, ale zadnou funkci jsem nenasel. Udelal jsem to
> > nasledovne:
> > 
> > SELECT '1970-1-1'::datetime + (u::text)::interval FROM t;
>                     ^^^^^^^^^
>         je mrtev at zite timestamp :-)
> 
> > Predpoklad je, ze ve sloupci 'u' v tabulce 't' jsou ty pocty sekund.
> > Prevod cisla na interval (u::interval) nefungoval, proto je tam
> > jeste ten meziprevod na text.
> 
>  V 7.2 by to melo jit trosku vice primocare:
> 
> test=# SELECT 'epoch'::timestamp + 1026985310.20481::interval;
>            ?column?           
> ------------------------------
>  2002-07-18 11:41:50.20481+02
> 
>  na misto toho cisla si muzete dat ten sloupecek.

Nevim jak vam, ale mne to fachci tak napul:


test=# SELECT version();
                           version                           
-------------------------------------------------------------
PostgreSQL 7.2 on i686-pc-linux-gnu, compiled by GCC 2.95.4
(1 row)


test=# SELECT 'epoch'::timestamp + u::interval FROM t;
ERROR:  Cannot cast type 'integer' to 'interval'


test=# SELECT 'epoch'::timestamp + 1026985310.20481::interval;
           ?column?           
------------------------------
 2002-07-18 11:41:50.20481+02
(1 row)


test=# SELECT 'epoch'::timestamp + (u::text)::interval FROM t;
        ?column?        
------------------------
 2002-07-18 11:28:24+02
 1970-01-12 22:16:24+01
(2 rows)


Uz jsem se s tim setkal ve vic pripadech (cidr/inet).

Zdravi

Radek Kaňovský


Další informace o konferenci Databases