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

Tạo chuỗi ngày - sử dụng loại ngày làm đầu vào

Nhờ độ phân giải loại chức năng chúng ta cũng có thể chuyển date giá trị của generate_series() bởi vì có một ẩn ý truyền từ date đến timestamp cũng như từ date đến timestamptz . Sẽ không rõ ràng, nhưng timestamptz "ưu tiên" trong số "Loại ngày / giờ". Giải thích chi tiết:

  • Tạo chuỗi thời gian giữa hai ngày trong PostgreSQL

Đối với một date trống rỗng giờ địa phương 00:00 được đảm nhận trong dàn diễn viên. Lưu ý rằng cài đặt múi giờ hiện tại ảnh hưởng trực tiếp đến kết quả nếu bạn sử dụng date là đầu vào vì rõ ràng là '2014-01-10 00:00' đại diện cho một thời điểm ở Tokio khác với ở New York.

Làm cách nào để Postgres quyết định loại nào được chấp nhận?

Về cơ bản, Postgres phân biệt giữa ba loại phôi:

Explicit casts .. khi sử dụng CAST hoặc :: cú pháp.
Assignment cast .. ép kiểu ngầm định khi một giá trị được gán cho một cột đích.
Implicit cast .. ẩn trong tất cả các biểu thức khác.

Phải có một ẩn ý ép kiểu đã đăng ký trong hệ thống từ kiểu đầu vào sang kiểu mong đợi để làm cho một hàm âm thầm chấp nhận (và chuyển đổi) một giá trị đầu vào.

Để xem phôi nào được xác định thành timestamptz , bạn có thể truy vấn bảng danh mục pg_cast :

SELECT castsource::regtype, casttarget::regtype, castcontext
FROM   pg_cast
WHERE  casttarget = 'timestamptz'::regtype;

         castsource          |        casttarget        | castcontext
-----------------------------+--------------------------+-------------
 abstime                     | timestamp with time zone | i
 date                        | timestamp with time zone | i
 timestamp without time zone | timestamp with time zone | i
 timestamp with time zone    | timestamp with time zone | i

Tất cả các diễn viên này đều là ẩn ý . Theo tài liệu về castcontext :

Cho biết ngữ cảnh mà dàn diễn viên có thể được gọi trong. e chỉ có nghĩa là truyền không rõ ràng (sử dụng CAST hoặc :: cú pháp). a có nghĩa là không gán một cách hoàn toàn cho cột mục tiêu, cũng như một cách rõ ràng. i nghĩa một cách rõ ràng trong các biểu thức, cũng như các trường hợp khác.

Nhấn mạnh đậm của tôi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy - SQLite để thử nghiệm và Postgresql để phát triển - Làm thế nào để chuyển?

  2. Nâng cấp lên PostgreSQL 11 với Logical Replication

  3. Đếm số ngày giữa 2 ngày trong JPA

  4. Trả về bản ghi setof (bảng ảo) từ hàm

  5. Cân bằng tải PostgreSQL trong đám mây trở nên dễ dàng