dotaz na polozku typu timestamp v pgsql

Jiri Chaloupka dev na b2bexpander.com
Sobota Září 14 10:24:30 CEST 2002


Dne sobota 14 září 2002 00:58 jste napsal(a):
> On Sat, Sep 14, 2002 at 12:01:39AM +0200, Jiri Chaloupka wrote:
> > Zdravim,
> > potrebuji vytahnout z tabulky v pgsql (7.2) zaznamy vztahujici se k
> > urcitemu mesici.
> > V one tabulce je sloupec typu timestamp.
> >
> > Zkousel jsem tedy po vzoru tahani dat k urcitemu dni psat
> > select * from table where date like '2002-09' ale to nefunguje (nejak
> > jsem se domnival, ze u tohoto datoveho typu mi bude rozumet.
>
> Možná kdybyste to převedl na řetězec, tj. něco jako
>
>   where cast(date as varchar(32)) like '2002-09%'
Zatim nevim proc, ale toto mi neprojde pres jdbc...


> Rychlejší asi nic nebude. Asi by šlo udělat si externí funkce
> vracející z timestampu rok a měsíc a zkusit něco na způsob
>
>   where date_y(date)=2002 and date_m(date)=9

No, zkusil jsem napsat funkce:
create or replace function year(timestamp) returns int as '
-- jako argument ocekava nazev sloupce s obsazenym timestampem
DECLARE r int;
BEGIN
SELECT EXTRACT(YEAR FROM TIMESTAMP $1) as r;
return r;
END;
'language 'plpgsql';

ale kdyz pak dam
...and year(date) = 2002
dostanu na konzoli:
NOTICE:  Error occurred while executing PL/pgSQL function year
NOTICE:  line 4 at SQL statement
ERROR:  parser: parse error at or near "$1"

Jirka



Další informace o konferenci Test