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

Cách make_interval () hoạt động trong PostgreSQL

Trong PostgreSQL, make_interval() hàm tạo khoảng thời gian từ các trường năm, tháng, tuần, ngày, giờ, phút và giây.

Bạn cung cấp các trường năm, tháng, tuần, ngày, giờ, phút và / hoặc giây và nó sẽ trả về một khoảng thời gian trong khoảng thời gian kiểu dữ liệu.

Cú pháp

Hàm có cú pháp sau:

make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)

Ví dụ

Đây là một ví dụ để chứng minh.

SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

Kết quả:

1 year 2 mons 25 days 05:06:07

Trong ví dụ này, tôi đã cung cấp tất cả bảy đối số.

Đây là cơ chế truyền thống để chuyển các đối số đến các hàm trong PostgreSQL và nó được gọi là “ký hiệu vị trí”.

Khi sử dụng ký hiệu vị trí, tất cả các đối số được chỉ định theo thứ tự.

Ký hiệu được đặt tên

Dưới đây là một ví dụ sử dụng ký hiệu được đặt tên.

SELECT make_interval(days => 12);

Kết quả:

12 days

Trong ví dụ này, tôi sử dụng ký hiệu được đặt tên để chỉ định một đối số. Điều này giúp tôi không phải nhập tất cả các đối số, chỉ để chỉ định số ngày.

Tất cả các đối số mặc định bằng 0, vì vậy, không có tác động tiêu cực nào bằng cách bỏ qua chúng.

Đây là những gì sẽ xảy ra nếu tôi không sử dụng ký hiệu được đặt tên khi chỉ định một đối số.

SELECT make_interval(12);

Kết quả:

12 years

Nó cho rằng tôi có nghĩa là 12 năm.

Điều tốt về ký hiệu được đặt tên là bạn có thể cung cấp bao nhiêu đối số tùy thích và không cần thêm nữa.

Ví dụ:

SELECT make_interval(months => 10, days => 5, mins => 47);

Kết quả:

10 mons 5 days 00:47:00

Ký hiệu được đặt tên kế thừa

Các phiên bản cũ hơn của Postgres sử dụng một cú pháp hơi khác cho ký hiệu được đặt tên. Cú pháp này sử dụng := thay vì => .

Ví dụ:

SELECT make_interval(days := 12);

Kết quả:

12 days

Kể từ Postgres 12, cú pháp này vẫn hoạt động để tương thích ngược.

Tuần và Ngày

Với khoảng Postgres, tuần được biểu thị dưới dạng ngày. Vì vậy, nếu bạn chỉ định weeks đối số, kết quả sẽ có sau vài ngày.

SELECT make_interval(weeks => 2);

Kết quả:

14 days

Do đó, nếu bạn cũng chỉ định days đối số, nó sẽ được thêm vào những ngày được tạo bởi weeks đối số.

SELECT make_interval(weeks => 2, days => 3);

Kết quả:

17 days

Kiểu đầu ra khoảng thời gian

Trong Postgres, định dạng đầu ra của kiểu khoảng có thể được đặt thành một trong bốn kiểu khoảng sau:

  • sql_standard
  • postgres
  • postgres_verbose
  • iso_8601

Bạn có thể đặt điều này bằng cách sử dụng SET intervalstyle . Mặc định là postgres định dạng.

Các ví dụ trước đều sử dụng định dạng mặc định (postgres ).

Dưới đây là một ví dụ minh họa đầu ra của make_interval() khi sử dụng các kiểu đầu ra khác nhau.

sql_standard

SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

Kết quả:

+1-2 +25 +5:06:07

postgres

Đây là cài đặt mặc định.

SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

Kết quả:

1 năm 2 gió 25 ngày 05:06:07

postgres_verbose

SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

Kết quả:

@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs

iso_8601

SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

Kết quả:

P1Y2M25DT5H6M7S

  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ựa chọn hàng ngẫu nhiên nhanh chóng trong Postgres

  2. Lỗi khi cố chạy pgAdmin4

  3. bộ chuyển đổi postgres rails có hỗ trợ ssl không?

  4. Bản ghi dựa trên con trỏ trong PostgreSQL

  5. Triển khai và quản lý PostgreSQL 11:Mới trong ClusterControl 1.7.1