Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách định dạng tháng bằng chữ số La mã trong Oracle

Cơ sở dữ liệu Oracle cung cấp cho chúng tôi khả năng trả về tháng từ một ngày bằng cách sử dụng các chữ số la mã.

Ví dụ:nếu tháng là tháng 8, giá trị thập phân của nó sẽ là 08 và tương đương với chữ số la mã sẽ là VIII.

Cách để làm điều này là sử dụng RM hoặc rm phần tử định dạng trong mặt nạ định dạng của bạn. Điều đó sẽ định dạng tháng bằng cách sử dụng chữ số la mã ở dạng chữ hoa hoặc chữ thường.

Việc chỉ định định dạng ngày tháng có thể được thực hiện ở một số nơi.

Chỉ định Chữ số La Mã khi gọi một hàm

Dưới đây là ví dụ về việc chỉ định chữ số la mã khi định dạng ngày bằng TO_CHAR(datetime) chức năng:

SELECT TO_CHAR(DATE '2035-08-11', 'DD RM YYYY') FROM DUAL;

Kết quả:

11 VIII 2035

Trong trường hợp này, tôi đã chỉ định các chữ số la mã viết hoa.

Để chỉ định chữ thường, chỉ cần thay đổi RM thành rm :

SELECT TO_CHAR(DATE '2035-08-11', 'DD rm YYYY') FROM DUAL;

Kết quả:

11 viii 2035

Xem Danh sách các phần tử định dạng ngày giờ trong Oracle để biết danh sách đầy đủ các phần tử định dạng có thể được sử dụng để định dạng giá trị ngày giờ.

Chỉ định Chữ số La Mã cho Cả phiên

Ngoài ra, bạn có thể đặt định dạng ngày cho cả phiên của mình. Điều này có thể hữu ích nếu bạn cần thực hiện nhiều lệnh gọi hàm trả về ngày tháng.

Có ba tham số liên quan:NLS_DATE_FORMAT , NLS_TIMESTAMP_FORMATNLS_TIMESTAMP_TZ_FORMAT .

Các tham số này có giá trị mặc định được lấy từ NLS_TERRITORY (có giá trị mặc định phụ thuộc vào hệ điều hành). Tuy nhiên, bạn có thể cập nhật bất kỳ thông số nào trong số này cho phiên hiện tại nếu được yêu cầu.

Dưới đây là ví dụ về việc cập nhật các thông số này để sử dụng định dạng ngày bao gồm các chữ số la mã cho phần tháng:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD RM YYYY';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM TZR';

Kết quả:

Session altered.


Session altered.


Session altered.

Bây giờ, khi tôi gọi một hàm trả về giá trị ngày giờ, tôi nhận được tháng ở dạng số la mã.

Ví dụ:

SELECT TO_CHAR(SYSDATE) FROM DUAL;

Kết quả:

10 VIII 2021

Lưu ý rằng tôi đã vượt qua SYSDATE thành TO_CHAR() .

Nếu tôi không làm điều đó, NLS_DATE_FORMAT tham số không có hiệu lực:

SELECT SYSDATE FROM DUAL;

Kết quả:

2021-08-10 20:04:49

Vấn đề này không tồn tại với các định dạng ngày khác. Tôi chỉ gặp nó với các chữ số la mã.

Một giải pháp lâu dài hơn

Các ví dụ trên là các giải pháp tạm thời để trả về tháng bằng số la mã. Đối với một giải pháp lâu dài hơn, các tham số NLS có thể được đặt ở cấp cơ sở dữ liệu, trong tệp tham số khởi tạo hoặc trong các biến môi trường. Xem Phương pháp thiết lập các tham số NLS và mức độ ưu tiên của chúng để biết các ví dụ về những điều này, cũng như thứ tự ưu tiên của chúng trong mối quan hệ với nhau.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa cơ sở dữ liệu oracle trước khi chạy các tập lệnh Xóa / Tải dữ liệu

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP không thể truyền sang java.sql.Timestamp

  3. Tích hợp ServiceNow với Oracle Identity Cloud Service (IDCS)

  4. Cài đặt Oracle 9i Developer Suite 2.0 trên Windows

  5. Ví dụ về Oracle FOR LOOP REVERSE