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

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

Trong PostgreSQL, extract() hàm truy xuất các trường con như năm, tháng, giờ hoặc phút, một phần từ giá trị ngày / giờ.

Nó tương đương với date_part() , mặc dù có cú pháp hơi khác một chút.

Cú pháp

Cú pháp như sau:

EXTRACT(field FROM source)

Ở đâu:

  • field là một số nhận dạng hoặc chuỗi chọn trường để trích xuất từ ​​giá trị nguồn.
  • source dấu thời gian hoặc một khoảng thời gian .

Ví dụ - Dấu thời gian

Dưới đây là một ví dụ cơ bản để minh họa cách truy xuất trường từ dấu thời gian giá trị.

SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');

Kết quả:

10

Ví dụ này truy xuất trường giờ từ dấu thời gian giá trị.

Như đã đề cập, đối số đầu tiên có thể là một định danh hoặc chuỗi. Đây là một trong những điểm khác biệt giữa extract()date_part() . Khi sử dụng date_part() , bạn phải cung cấp một chuỗi cho đối số này.

Đây là ví dụ tương tự một lần nữa, ngoại trừ dưới dạng một chuỗi.

SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');

Kết quả:

10

Dưới đây là một ví dụ có cùng dấu thời gian, nhưng lần này tôi truy xuất trường năm.

SELECT extract(year FROM timestamp '2022-10-30 10:11:35');

Kết quả:

2022

Ví dụ - Khoảng thời gian

Trong ví dụ này, tôi truy xuất một phần ngày từ khoảng thời gian giá trị.

SELECT extract(hour FROM interval '7 hours 45 minutes');

Kết quả:

7

Trong ví dụ tiếp theo, hàm trả về số giờ một cách chính xác, mặc dù tôi chỉ cung cấp số phút.

SELECT extract(hour FROM interval '120 minutes');

Kết quả:

2

Tuy nhiên, đừng tin tưởng vào kỹ thuật này. Bạn có thể thấy rằng không phải lúc nào bạn cũng nhận được kết quả như mong đợi.

Ví dụ:

SELECT extract(hour FROM interval '100 minutes');

Kết quả:

1

Và một cái khác:

SELECT extract(minute FROM interval '2 hours');

Kết quả:

0

Tên trường

Đối số đầu tiên có thể là bất kỳ đối số nào sau đây:

  • century
  • day
  • decade
  • dow
  • doy
  • epoch
  • hour
  • isodow
  • isoyear
  • microseconds
  • millennium
  • milliseconds
  • minute
  • month
  • quarter
  • second
  • timezone
  • timezone_hour
  • timezone_minute
  • week
  • year

Các giá trị này giống với các giá trị hợp lệ cho date_part() chức năng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hội nghị mùa xuân FLOSS Vương quốc Anh

  2. fe_sendauth:không cung cấp mật khẩu

  3. Kích hoạt so với kiểm tra ràng buộc

  4. psql:không thể kết nối với máy chủ:Không có tệp hoặc thư mục như vậy (Mac OS X)

  5. Cài đặt Postgres trên windows để sử dụng với Ruby-on-Rails