dotaz na polozku typu timestamp v pgsql

Michal Kubecek mike na mk-sys.cz
Sobota Září 14 00:58:38 CEST 2002


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%'

> Existuje jiny zpusob (=rychlejsi) nez dopocitavat zacatek a konec mesice a pak 
> davat 
> where date between '2002-09-01' and '2002-09-31'?

Jestli je to opravdu typ timestamp a ne date, pak by to spíš
mělo být

  where date>='2002-09-01' and date<'2002-10-01'

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

ale to samozřejmě bude pomalejší (nemůže využít případný index
a musí tu funkci volat pro každý záznam).

                                                 Michal Kubeček


Další informace o konferenci Test