Según este hilo en la lista de correo de hackers:
http://www.mail-archive.com/[email protected]/msg86725.html
este es el comportamiento previsto como to_char
depende de la configuración de LC_MESSAGES
En su caso, aparentemente esto no tiene sentido ya que el formato que está usando nunca dependerá de la configuración regional, por lo que si necesita usar la representación de texto en el índice, puede crear su propia función to_char() y marcarla como inmutable:
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;
Si tiene que usarlo como texto en el índice (y no puede usar el molde para una fecha como sugirió Sam), deberá crear su propia función de formato que puede marcar como inmutable. Eso se puede usar en el índice.
Pero para hacer que Postgres use el índice deberá llamar a my_to_char()
en sus declaraciones SQL también. No lo reconocerá cuando use el to_char()
incorporado
Pero sí creo que la sugerencia de Sam de usar una fecha directa en el índice probablemente sea mejor