Trong Cơ sở dữ liệu Oracle, bạn có thể sử dụng fm
(chế độ điền) công cụ sửa đổi định dạng để loại bỏ bất kỳ số 0 ở đầu nào có thể được áp dụng cho một ngày. Công cụ sửa đổi định dạng này loại bỏ phần đệm, bao gồm các số 0 ở đầu và khoảng trống ở cuối.
Để sử dụng fm
công cụ sửa đổi định dạng, hãy đưa nó vào mô hình định dạng của bạn khi chỉ định cách định dạng ngày tháng. Ví dụ khi sử dụng TO_CHAR()
hàm để định dạng ngày tháng hoặc trong các tham số NLS như NLS_DATE_FORMAT
khi đặt định dạng ngày cho phiên hiện tại của bạn.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT
TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
Kết quả:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Chúng ta có thể thấy rằng kết quả ban đầu (không có fm
modifier) trả về các số 0 ở đầu cho tất cả các phần của ngày tháng. Trong trường hợp này, fm
công cụ sửa đổi đã loại bỏ số 0 ở đầu trên cả ba phần ngày.
fm
công cụ sửa đổi chỉ ảnh hưởng đến kết quả nếu thực sự có các số 0 đứng đầu trong kết quả.
Đây là một ngày bao gồm các phần ngày chiếm hai chữ số và do đó không có các số 0 ở đầu:
SELECT
TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;
Kết quả:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Cách chỉ định Chế độ điền vào một số phần ngày
Ví dụ trên đã loại bỏ số 0 ở đầu trên tất cả các phần của ngày tháng. Số 0 ở đầu đã bị xóa khỏi ngày, tháng và năm. Điều này là do, khi chúng ta đặt một fm
ở đầu mô hình định dạng, nó ngăn chặn tất cả các số 0 tiếp theo trong kết quả.
Giả sử chúng ta chỉ muốn xóa số 0 đứng đầu của ngày và tháng, nhưng giữ lại nó trên năm. Trong trường hợp này, chúng ta có thể làm như sau:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Kết quả:
1-8-09
fm
modifier về cơ bản hoạt động giống như một công tắc. Khi bạn bao gồm một, nó sẽ loại bỏ các số không cho đến cuối hoặc cho đến khi nó gặp một fm
khác bổ nghĩa. Nếu có fm
thứ hai bổ nghĩa, sau đó các số không ở đầu không bị triệt tiêu ngoài thời điểm đó, v.v.
Đây là những gì sẽ xảy ra khi chúng tôi bao gồm ba fm
bổ ngữ - một trước mỗi phần ngày:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Kết quả:
1-08-9
Vì vậy, trong trường hợp này, fm
sửa đổi về cơ bản đã được bật, sau đó bị vô hiệu hóa, sau đó được bật lại.
Tham số NLS
Bạn cũng có thể chỉ định chế độ điền vào các tham số NLS của mình, chẳng hạn như NLS_DATE_FORMAT
Tham số khi đặt định dạng ngày cho phiên hiện tại của bạn.
Ví dụ:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Kết quả:
7-8-09