De acordo com este tópico na lista de discussão de hackers:
http://www.mail-archive.com/[email protected]/msg86725.html
este é um comportamento pretendido como
to_char
depende da configuração LC_MESSAGES No seu caso, aparentemente, isso não faz sentido, pois o formato que você está usando nunca dependerá da localidade, portanto, se você precisar usar a representação de texto no índice, poderá criar sua própria função to_char() e marcá-la como imutável:
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;
Se você precisar usá-lo como um texto no índice (e não puder usar a conversão para uma data como Sam sugeriu), precisará criar sua própria função de formatação que pode marcar como imutável. Isso pode ser usado no índice.
Mas para fazer o Postgres usar o índice que você precisará chamar
my_to_char()
em suas instruções SQL também. Ele não irá reconhecê-lo quando você usar o to_char()
embutido Mas acho que a sugestão de Sam usando uma data direta no índice é provavelmente melhor