Portál AbcLinuxu, 10. května 2025 13:55
Řešení dotazu:
like
je řetězcový operátor. Buď si to nejdřív zkonvertujte na string nebo (lépe) použijte funkci, která vám z toho data vytáhne příslušnou složku. Vůbec nejlepší ale bude spočítat si začátek a konec toho intervalu a použít normální porovnávání.
Jestli mohu poradit, tak k tomuhle LIKE zásadně nepoužívejte. Věřím, že se Vám skrz LIKE pohodlně navrhne univerzální vyhledávací dialog, ale to je asi tak všechno. Nikdy se Vám nechytne index, a na větších tabulkách to bude pomalé - poněvadž se timestamp musí konvertovat z nativního formátu do varcharu. Košer způsob je upravit vyhledávací dialog a umožnit zadávat dotazy:
SELECT * FROM tabulka WHERE datum::date > date '2009-10-01' AND datum::date < date '2009-10-01' + interval '1 month';
Uvidíte, jak databáze může být rychlá (když se jí neházejí klacky pod nohy :)).
Jinak chybu ve Vašem dotazu způsobují uvozovky. V PostgreSQL, stejně tak jako ve všech ANSI SQL databázích se uvozovky používají ke specifikaci určitým způsobem nestandardního identifikátoru. Nikoliv řetězce.
tj. správně má být WHERE datum LIKE
'2009-10-%'
Ale opět jestli mohu doporučit - LIKE používejte pouze na nativní varchar - ještě lépe fulltext.
jasne - ta podminka ma byt >= AND <
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.