Podle tohoto vlákna v mailing listu hackerů:
http://www.mail-archive.com/[email protected]/msg86725.html
toto je zamýšlené chování jako to_char
závisí na nastavení LC_MESSAGES
Ve vašem případě to zjevně nedává smysl, protože formát, který používáte, nebude nikdy záviset na národním prostředí, takže pokud potřebujete použít textovou reprezentaci v indexu, můžete si vytvořit vlastní funkci to_char() a označit ji jako neměnný:
CREATE OR REPLACE FUNCTION my_to_char(some_time timestamp)
RETURNS text
AS
$BODY$
select to_char($1, 'yyyy-mm-dd');
$BODY$
LANGUAGE sql
IMMUTABLE;
Pokud jej musíte použít jako text v rejstříku (a nemůžete použít obsazení k datu, jak navrhl Sam), budete si muset vytvořit vlastní funkci formátování, kterou můžete označit jako neměnnou. To pak lze použít v indexu.
Ale aby Postgres využil index, který budete muset volat my_to_char()
také ve vašich příkazech SQL. Při použití vestavěného to_char()
to nerozpozná
Ale myslím si, že Samův návrh použít v indexu rovné datum je pravděpodobně lepší