Với Cơ sở dữ liệu Oracle, chúng ta có thể sử dụng TO_CHAR(datetime)
hàm để trả về thế kỷ từ một giá trị ngày giờ.
Để làm điều này, chúng tôi có thể sử dụng CC
phần tử định dạng hoặc SCC
phần tử định dạng. Chúng tôi có thể kết hợp chúng với các phần tử định dạng khác để thực hiện những việc như, hiển thị số thứ tự, đánh vần thế kỷ, v.v.
Ví dụ
Dưới đây là một ví dụ sử dụng CC
phần tử định dạng để trả về thế kỷ từ một giá trị ngày tháng:
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Kết quả:
21
Thế kỷ phủ định
Chúng ta có thể sử dụng SCC
phần tử định dạng để bao gồm dấu trừ khi chuyển ngày âm:
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Kết quả:
-21
Số thứ tự
Chúng ta có thể thêm TH
phần tử định dạng để trả về số thứ tự của thế kỷ.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Kết quả:
21ST
Chúng tôi cũng có thể thêm văn bản tùy ý để nối từ “Century”:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Kết quả:
21ST Century
Lưu ý rằng văn bản được bao quanh bởi dấu ngoặc kép.
Chúng tôi có thể sử dụng cách viết hoa theo yêu cầu:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Kết quả:
21ST Century
Lưu ý rằng tôi chỉ viết hoa ký tự đầu tiên trong mô hình định dạng. Ý tôi là tôi đã sử dụng Ccth
thay vì CCth
. Trong khi bạn có thể nghĩ rằng CCth
sẽ dẫn đến số thứ tự viết thường, đó không phải là cách nó hoạt động. Đây là những gì sẽ xảy ra khi chúng tôi làm điều đó:
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Kết quả:
21ST Century
Về cơ bản, khi hai ký tự đầu tiên của mô hình định dạng là chữ hoa, kết quả là chữ hoa. Do đó, để tạo chữ hoa tiêu đề, chỉ viết hoa ký tự đầu tiên của mô hình định dạng.
Thế kỷ chính tả
Chúng tôi có thể thêm SP
phần tử định dạng để có đánh vần thế kỷ:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Kết quả:
TWENTY-FIRST Century
Và chúng ta có thể viết hoa theo yêu cầu:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Kết quả:
21ST Century
Chúng ta có thể bỏ qua TH
công cụ định dạng nếu chúng tôi không muốn số thứ tự:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Kết quả:
Twenty-One
Thế kỷ 20 so với thế kỷ 21
Các quy tắc sau áp dụng liên quan đến thời điểm một ngày được coi là ở thế kỷ 20 so với thế kỷ 21.
- Nếu 2 chữ số cuối cùng của năm có 4 chữ số nằm trong khoảng từ 01 đến 99 (bao gồm cả), thì thế kỷ sẽ lớn hơn 2 chữ số đầu tiên của năm đó một chữ số.
- Nếu 2 chữ số cuối của năm có 4 chữ số là 00, thì thế kỷ giống với 2 chữ số đầu tiên của năm đó.
Khái niệm tương tự cũng áp dụng cho các thế kỷ khác, chẳng hạn như thế kỷ 13, thế kỷ 30, v.v.
Ví dụ:
SELECT
TO_CHAR(DATE '1999-12-30', 'CC') AS "1999",
TO_CHAR(DATE '2000-12-30', 'CC') AS "2000",
TO_CHAR(DATE '1299-12-30', 'CC') AS "1299",
TO_CHAR(DATE '1300-12-30', 'CC') AS "1300",
TO_CHAR(DATE '2999-12-30', 'CC') AS "2999",
TO_CHAR(DATE '3000-12-30', 'CC') AS "3000"
FROM DUAL;
Kết quả:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Có nhiều phần tử định dạng khác có sẵn để định dạng giá trị ngày giờ trong Oracle. Xem Danh sách các phần tử định dạng ngày giờ trong Oracle để có danh sách đầy đủ.