PostgreSQL cung cấp cho chúng ta một số cách để lấy ngày, tháng và năm từ một ngày.
Ba chức năng ngay lập tức xuất hiện trong tâm trí là; DATE_PART()
, EXTRACT()
và TO_CHAR()
.
EXTRACT()
EXTRACT()
function 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ờ.
Ví dụ:
SELECT EXTRACT(YEAR FROM date '2035-10-30');
Kết quả:
2035
Chúng tôi có thể trả về các phần ngày tháng khác nhau trong các trường riêng biệt bằng cách thực hiện ba lệnh gọi riêng biệt cho hàm này:
SELECT
EXTRACT(DAY FROM date '2035-10-30') AS "Day",
EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
EXTRACT(YEAR FROM date '2035-10-30') AS "Year";
Kết quả:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Ở đây, tôi đã trả lại ngày trong tháng, ngày trong tuần, ngày trong năm, tháng và năm kể từ ngày.
Xem Cách hoạt động của Extract () trong PostgreSQL để biết thêm ví dụ và danh sách các tên trường có thể được trả về bởi hàm này.
DATE_PART()
DATE_PART()
hàm tương đương với EXTRACT()
, nhưng với một cú pháp hơi khác.
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Kết quả:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Hàm này yêu cầu đối số đầu tiên được cung cấp dưới dạng một chuỗi và dấu phẩy phân tách hai đối số thay vì FROM
từ khóa.
TO_CHAR()
TO_CHAR()
chức năng linh hoạt hơn, trong đó nó có thể được sử dụng để cung cấp nhiều loại đầu ra hơn. Ví dụ:chúng ta có thể sử dụng hàm này để trả về tất cả ngày, tháng và năm trong một trường:
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');
Kết quả:
Saturday , 02nd December 2045
Chúng ta có thể sử dụng fm
công cụ sửa đổi mẫu để loại bỏ bất kỳ phần đệm nào có thể được áp dụng:
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');
Kết quả:
Monday, 1st April 2165
Cũng lưu ý rằng th
công cụ sửa đổi mẫu đủ thông minh để biết liệu st
, nd
, rd
hoặc th
nên được thêm vào.
Dưới đây là một ví dụ sử dụng các lệnh gọi khác nhau tới TO_CHAR()
để xuất các phần ngày tháng khác nhau trong các trường riêng biệt:
SELECT
TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY";
Kết quả:
Day | DD | Month | YYYY --------+----+-------+------ Monday | 1 | April | 2165