Autor Zpráva
tomyx007
Profil
Dobry den, prosim o radu, mam v tabulce sloupec "datum", ktery je datoveho typu timestamp jsou v nem data ve formatu napr "2007-12-12 14:12:33" a snazim se v selectu pouzit v podmince WHERE "LIKE" aby si pak uzivatel mohl vypis na strance filtrovat podle mesicu v jednotlivych rocich, napr.:

SELECT datum FROM tabulka WHERE datum LIKE "2009-10%"


Coz dostanu chybu:

ERROR: syntax error at or near "WHERE" LINE 1: select datum from tabulka LIMIT 10 WHERE datum LIKE... Pouzivam Postgresql 8.3. Nevite cim to je?
Taps
Profil
tomyx007zkus
SELECT datum FROM tabulka WHERE datum LIKE '2009-10%'
TomášK
Profil
Protože LIKE neslouží k porovnávání dat, ale řetězců. Porovnávání řetězců je výpočetně poměrně náročné, operátor LIKE by se měl používat jen pokud je pro něj dobrý důvod, tady ne. Než datum převést na text a porovnávat texty, raději zadávanou hodnotu převést na číslo a porovnávat čísla (předpokládám, že vnitřní reprezentace data je v postgresql číslo).
SELECT datum FROM tabulka WHERE datum BETWEEN '2009-10-01 00:00:00' AND '2009-10-31 23:59:59'

Nevím, jestli není ještě nějaké elegantnější řešení, kdy by se tam nemusely vypisovat ta čísla, ale určitě je to lepší než používat LIKE.
tomyx007
Profil
dekuju, tohle funguje
BETWEEN '2009-10-01 00:00:00' AND '2009-10-31 23:59:59'
Toto téma je uzamčeno. Odpověď nelze zaslat.