Dưới đây là hai hàm có thể được sử dụng để trả về ngày từ một ngày trong Cơ sở dữ liệu Oracle.
EXTRACT()
Chức năng
EXTRACT(datetime)
hàm được sử dụng để trích xuất các phần datetime khác nhau từ một giá trị datetime. Điều này bao gồm cả ngày.
Đây là một ví dụ:
SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL;
Kết quả:
25
Đó là DAY
từ khóa trích xuất phần ngày từ ngày. Chúng ta có thể lấy các phần ngày tháng khác bằng cách thay đổi nó thành từ khóa có liên quan. Ví dụ:YEAR
, MONTH
, HOUR
, MINUTE
, v.v.
Chúng tôi cũng có thể sử dụng hàm với các giá trị ngày giờ khác, chẳng hạn như TIMESTAMP
, v.v.
TO_CHAR(datetime)
Chức năng
Chúng tôi cũng có thể sử dụng TO_CHAR(datetime)
hoạt động như một phương pháp thay thế để lấy ngày từ một ngày.
Hàm này chấp nhận giá trị ngày giờ hoặc khoảng thời gian làm đối số đầu tiên và mô hình định dạng làm đối số thứ hai. Sau đó, hàm chuyển đổi giá trị thành kiểu dữ liệu VARCHAR2
ở định dạng được chỉ định.
Mô hình định dạng chỉ định định dạng để trả về giá trị ngày giờ / khoảng thời gian. Mô hình định dạng bao gồm một hoặc nhiều phần tử định dạng . Điều này cho phép chúng tôi tạo ra các kết quả một cách cẩn thận để phản ánh định dạng mong muốn của chúng tôi.
Nếu chúng ta chỉ muốn trả về ngày, chúng ta có thể sử dụng một trong các yếu tố định dạng để trích xuất ngày.
Ngày trong tháng
Để lấy ngày trong tháng (từ 1-31), hãy sử dụng DD
phần tử định dạng:
SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL;
Kết quả:
03
Tên ngày đầy đủ
Để có tên đầy đủ của ngày, hãy sử dụng DAY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL;
Kết quả:
SATURDAY
Tên ngày ngắn
Để lấy tên ngày viết tắt, hãy sử dụng DY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL;
Kết quả:
SAT
Ngày trong năm
Để nhận ngày trong năm (từ 1-366), hãy sử dụng DDD
phần tử định dạng:
SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL;
Kết quả:
276
Ngày trong tuần
Để xem ngày trong tuần (từ 1-7), hãy sử dụng D
phần tử định dạng:
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Kết quả:
6
Phần tử định dạng này phụ thuộc vào lãnh thổ NLS của phiên. Giá trị của NLS_TERRITORY
hệ thống của tôi tham số là AUSTRALIA
và do đó, thứ Bảy được coi là ngày thứ sáu trong tuần.
Đây là những gì sẽ xảy ra nếu tôi thay đổi giá trị của NLS_TERRITORY
của mình tham số thành AMERICA
và chạy lại cùng một truy vấn:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Kết quả:
7
Lúc này thứ Bảy được coi là ngày thứ bảy trong tuần.