Khi sử dụng TO_CHAR()
chức năng định dạng giá trị ngày giờ trong Cơ sở dữ liệu Oracle, bạn có thể thêm chỉ báo meridiem (AM / PM) bằng cách chỉ cần thêm AM
hoặc PM
sang mô hình định dạng của bạn.
Sau đó, Oracle hiển thị chỉ báo meridiem thích hợp, tùy thuộc vào giá trị thời gian là SA hay CH.
Bạn có thể cung cấp nó bằng bất kỳ chữ hoa hoặc chữ thường nào và có hoặc không có dấu chấm (ví dụ:AM
, A.M.
am
, a.m
, vân vân). Sau đó Oracle sẽ hiển thị chỉ báo meridiem như đã chỉ định.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Kết quả:
08:30:45 AM
Trong trường hợp này, thời gian là ante meridiem, và do đó kết quả có AM
thêm vào.
SA và CH
Điều tốt về nó là Oracle tính toán cho dù đó là SA hay CH, và hiển thị chỉ báo meridiem áp dụng.
Vì vậy, đây là những gì sẽ xảy ra khi tôi thay đổi thời gian thành giá trị PM:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Kết quả:
06:30:45 PM
Chỉ báo meridiem hiện là PM, mặc dù chuỗi định dạng của tôi là AM
. Oracle đủ thông minh để biết rằng thời gian là hậu meridiem.
Chữ hoa và chữ thường
Thay đổi trường hợp của phần tử định dạng sẽ thay đổi trường hợp của kết quả:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS am') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS Am') AS "Mixed"
FROM DUAL;
Kết quả:
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Dấu chấm so với Không có dấu chấm
Bạn có thể thêm dấu chấm nếu muốn:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.M.') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS a.m.') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.m.') AS "Mixed"
FROM DUAL;
Kết quả:
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
Mặc dù vậy, hãy lưu ý rằng điều này ảnh hưởng đến chỉ báo meridiem trường hợp hỗn hợp.
Ngày và giờ của hôm nay
Ở đây, tôi vượt qua SYSDATE
để lấy ngày / giờ hiện tại:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Kết quả:
07:55:57 P.M.