Vấn đề:
Bạn muốn lấy ngày hiện tại (không tính thời gian) trong Oracle.
Giải pháp 1 (nếu bạn không bận tâm đến các số không là thời gian):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Ví dụ:nếu bạn chạy truy vấn này vào ngày 16 tháng 6 năm 2021, bảng kết quả sẽ giống như sau:
current_date |
---|
2021-06-16T00:00:00Z |
Thảo luận:
Oracle không có kiểu dữ liệu chỉ lưu trữ ngày mà không có thời gian. Nhưng nếu bạn không bận tâm đến các số không ở vị trí của thời gian, bạn có thể chỉ cần lưu trữ một ngày trong DATE
datatype (lưu trữ cả ngày và giờ trong Oracle). Để lấy ngày và giờ hiện tại dưới dạng DATE
giá trị, bạn có thể chỉ cần sử dụng CURRENT_DATE
. Để loại bỏ thời gian (và thay vào đó là các số 0), bạn cần cắt bớt ngày:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Giải pháp 2 (nếu bạn chỉ muốn ngày chứ không phải số 0 ở vị trí của thời gian):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Ví dụ:Nếu bạn chạy truy vấn này vào ngày 16 tháng 6 năm 2021, bảng kết quả sẽ giống như sau:
current_date |
---|
2021-06-16 |
Thảo luận:
Để nhận văn bản của VARCHAR2
nhập lưu trữ ngày tháng, bạn có thể sử dụng TO_CHAR()
chức năng trong Oracle. Bạn cần chỉ định dấu ngày / giờ được chuyển đổi làm đối số đầu tiên và ở định dạng mà bạn muốn lưu trữ ngày làm đối số thứ hai.
Vì bạn muốn ngày hiện tại, đối số đầu tiên là CURRENT_DATE
. Đối số thứ hai là sự lựa chọn của bạn. Ví dụ:'yyyy-MM-dd'
là viết tắt của 'year-month-day', trong đó tháng là số chứ không phải văn bản. Bảng dưới đây trình bày một số định dạng ngày mẫu và kết quả đầu ra tương ứng cho ngày 16 tháng 6 năm 2021.
định dạng ngày | kết quả |
---|---|
'YYYY-MM-DD' | 2021-06-16 |
'YYYY / MM / DD' | 2021/06/16 |
'YYYY MM DD' | 2021 06 16 |
'DD-MON-YYYY' | 16-THÁNG 6-2021 |
'DD-MON-YY' | 16-JUN-21 |
'Tháng Mười DD, YYYY' | ngày 16 tháng 6 năm 2021 |
Bạn có thể đọc thêm về các định dạng ngày tháng tại đây.