Vấn đề:
Bạn muốn lấy số tuần của giá trị ngày hoặc dấu thời gian trong cơ sở dữ liệu PostgreSQL.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên children
với dữ liệu trong các cột id
, first_name
, last_name
và birth_date
.
id | first_name | last_name | ngày sinh |
---|---|---|---|
1 | Angela | Michelin | 2018-01-01 |
2 | Martin | Jackson | 2002-07-26 |
3 | Justin | Clark | 2010-12-26 |
4 | Frank | Barker | 2008-06-08 |
Đối với mỗi đứa trẻ, hãy lấy họ, tên và số tuần trong ngày sinh của chúng.
Giải pháp 1:
Chúng tôi sẽ sử dụng DATE_PART()
hàm số. Đây là truy vấn bạn sẽ viết:
CHỌN first_name, last_name, DATE_PART ('week', Birth_date) AS Birth_week_numberFROM con;
Đây là kết quả của truy vấn:
first_name | last_name | Birth_week_number |
---|---|---|
Angela | Michelin | 1 |
Martin | Jackson | 30 |
Justin | Clark | 51 |
Frank | Barker | 23 |
Thảo luận:
Sử dụng DATE_PART()
hàm để truy xuất số tuần từ một ngày trong cơ sở dữ liệu PostgreSQL. Hàm này có hai đối số. Đối số đầu tiên là phần ngày tháng cần truy xuất; chúng tôi sử dụng "week", trả về số tuần (ví dụ:"1" cho tuần đầu tiên trong tháng Giêng, tuần đầu tiên của năm). Bạn có thể sử dụng một phần ngày tháng khác, như ngày, năm, tháng, giờ, phút, doy (số của ngày trong năm), v.v. Bạn có thể tìm hiểu thêm về các phần ngày trong tài liệu PostgreSQL.
Đối số thứ hai là tên cột của kiểu dữ liệu date / timestamp / timestamptz hoặc một biểu thức trả về một trong những kiểu này. (Trong ví dụ của chúng tôi, đó là một cột của ngày kiểu dữ liệu.)
Khi được sử dụng với phần ngày 'tuần', hàm DATE_PART()
trả về số tuần dưới dạng số nguyên. Trong ví dụ của chúng tôi, số tuần cho ngày sinh của đứa trẻ cụ thể được hiển thị; chúng tôi đặt tên cho cột này là birth_week_number
. Martin Jackson sinh ngày 2002-07-26
, do đó, hàm trả về '30' là số tuần của ngày sinh của anh ấy.
DATE_PART()
không chỉ là một cách để lấy số tuần. Một tùy chọn khác là sử dụng EXTRACT()
chức năng.
Giải pháp 2:
Chúng tôi sẽ sử dụng EXTRACT()
hàm số. Đây là truy vấn bạn sẽ viết:
CHỌN first_name, last_name, EXTRACT ('tuần' TỪ ngày sinh_ngày) NHƯ trẻ sinh_sứ_ngàyHàm này tương tự như
DATE_PART()
. Sự khác biệt là ở cú pháp:thay vì dấu phẩy giữa tên phần ngày tháng và cột / biểu thức, có từ khóa FROM. Ngoài ra,EXTRACT()
chức năng là tiêu chuẩn SQL. Kết quả là như nhau cho cả hai chức năng.