Trong Cơ sở dữ liệu Oracle, khi sử dụng TO_CHAR()
hàm để trả về tên ngày từ một ngày, phần đệm sẽ được thêm vào tên ngày nếu nó ngắn hơn tên ngày hợp lệ dài nhất cho ngôn ngữ và lịch nhất định.
Đó là hành vi mặc định. Tuy nhiên, bạn có thể thay đổi điều này nếu muốn.
Để loại bỏ phần đệm này, tất cả những gì bạn cần làm là thêm phần tử định dạng tên ngày vào trước với fm
.
Ví dụ
Giả sử chúng ta chạy đoạn mã sau:
SELECT
TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;
Kết quả:
Friday , 08 March 2030
Chúng ta có thể thấy rằng dấu cách ở cuối đã được thêm vào tên ngày và tên tháng.
Chúng ta có thể sử dụng fm
công cụ sửa đổi định dạng để loại bỏ khoảng trắng này:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;
Kết quả:
Friday , 08 March 2030
Vấn đề đã được giải quyết.
Lưu ý rằng điều này cũng có lợi ích phụ là loại bỏ các dấu cách ở cuối từ tên tháng.
Nó cũng loại bỏ số 0 đứng đầu trong số ngày.
Chúng tôi có thể sử dụng nhiều fm
bổ ngữ để cụ thể hơn về vùng đệm mà chúng tôi muốn loại bỏ. Mỗi fm
trong mô hình định dạng của chúng tôi, bật và tắt chế độ điền.
Giả sử chúng ta muốn loại bỏ các khoảng trắng ở cuối tên ngày và tháng, nhưng chúng ta muốn giữ lại số 0 đứng đầu trên số ngày. Trong trường hợp đó, chúng ta có thể làm như sau:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;
Kết quả:
Friday , 08 March 2030
Lý do chúng tôi sử dụng fm
thứ ba (trước MONTH
) là vì fm
thứ hai đã bật lại phần đệm cho tất cả các phần tử định dạng tiếp theo, điều này sẽ dẫn đến việc giữ lại các khoảng trống ở cuối trong tháng.
Đây là ý tôi:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;
Kết quả:
Friday , 08 March 2030
Trong trường hợp này, phần đệm đã bị loại bỏ khỏi tên ngày và sau đó được bật lại cho số ngày, tháng và năm.
May mắn thay, chúng ta có thể thêm bao nhiêu fm
bổ ngữ khi chúng ta cần để có được kết quả mong muốn.