Theo chủ đề này trong danh sách gửi thư của tin tặc:
http://www.mail-archive.com/[email protected]/msg86725.html
đây là hành vi dự định dưới dạng to_char
phụ thuộc vào cài đặt LC_MESSAGES
Trong trường hợp của bạn, điều này dường như không có ý nghĩa vì định dạng bạn đang sử dụng sẽ không bao giờ phụ thuộc vào ngôn ngữ, vì vậy nếu bạn cần sử dụng biểu diễn văn bản trong chỉ mục, bạn có thể tạo hàm to_char () của riêng mình và đánh dấu nó là không thay đổi:
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;
Nếu bạn phải sử dụng nó như một văn bản trong chỉ mục (và không thể sử dụng truyền đến một ngày như Sam đã đề xuất), bạn sẽ cần tạo chức năng định dạng của riêng mình mà bạn có thể đánh dấu là bất biến. Sau đó, nó có thể được sử dụng trong chỉ mục.
Nhưng để làm cho Postgres sử dụng chỉ mục bạn sẽ cần gọi my_to_char()
trong các câu lệnh SQL của bạn. Nó sẽ không nhận ra khi bạn sử dụng to_char()
tích hợp sẵn
Nhưng tôi nghĩ rằng đề xuất của Sam sử dụng một ngày thẳng trong chỉ mục có lẽ tốt hơn