Ifølge denne tråd i hackernes mailingliste:
http://www.mail-archive.com/[email protected]/msg86725.html
dette er tiltænkt adfærd som to_char
afhænger af LC_MESSAGES-indstillingen
I dit tilfælde giver dette tilsyneladende ikke mening, da det format, du bruger, aldrig vil afhænge af lokaliteten, så hvis du har brug for at bruge tekstrepræsentationen i indekset, kan du oprette din egen to_char()-funktion og markere den som uforanderlig:
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;
Hvis du skal bruge det som en tekst i indekset (og ikke kan bruge castet til en dato, som Sam foreslog), skal du oprette din egen formateringsfunktion, som du kan markere som uforanderlig. Det kan så bruges i indekset.
Men for at få Postgres til brug det indeks, du skal bruge for at kalde my_to_char()
også i dine SQL-sætninger. Det vil ikke genkende det, når du bruger den indbyggede to_char()
Men jeg tror, at Sams forslag om at bruge en lige dato i indekset nok er bedre