Autor | Zpráva | ||
---|---|---|---|
tomyx007 Profil |
#1 · Zasláno: 13. 8. 2009, 21:57:07
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 |
#2 · Zasláno: 13. 8. 2009, 22:01:28
tomyx007zkus
SELECT datum FROM tabulka WHERE datum LIKE '2009-10%' |
||
TomášK Profil |
#3 · Zasláno: 13. 8. 2009, 23:09:51 · Upravil/a: TomášK
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 |
#4 · Zasláno: 14. 8. 2009, 07:29:07 · Upravil/a: tomyx007
dekuju, tohle funguje
„BETWEEN '2009-10-01 00:00:00' AND '2009-10-31 23:59:59'“ |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0