PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

LỖI:các hàm trong biểu thức chỉ mục phải được đánh dấu là CÓ THỂ NGAY LẬP TỨC trong Postgres

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tính toán đường trung bình động theo cấp số nhân trên postgres?

  2. Làm cách nào để khởi động máy chủ PostgreSQL trên Mac OS X?

  3. Chuyển các tham số IN WHERE cho Dạng xem PostgreSQL?

  4. Tính giờ làm việc giữa 2 ngày trong PostgreSQL

  5. Sao chép bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong Postgres