Menurut utas ini di milis peretas:
http://www.mail-archive.com/[email protected]/msg86725.html
ini adalah perilaku yang dimaksudkan sebagai to_char
tergantung pada pengaturan LC_MESSAGES
Dalam kasus Anda, ini tampaknya tidak masuk akal karena format yang Anda gunakan tidak akan pernah bergantung pada lokal, jadi jika Anda memang perlu menggunakan representasi teks dalam indeks, Anda dapat membuat fungsi to_char() Anda sendiri dan menandainya sebagai tidak berubah:
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;
Jika Anda harus menggunakannya sebagai teks dalam indeks (dan tidak dapat menggunakan pemeran sampai tanggal seperti yang disarankan Sam), Anda perlu membuat fungsi pemformatan sendiri yang dapat Anda tandai sebagai tidak dapat diubah. Itu kemudian dapat digunakan dalam indeks.
Tetapi untuk membuat Postgres menggunakan indeks yang perlu Anda panggil my_to_char()
dalam pernyataan SQL Anda juga. Itu tidak akan mengenalinya saat Anda menggunakan to_char()
. bawaan
Tapi saya pikir saran Sam menggunakan tanggal langsung dalam indeks mungkin lebih baik