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

Cách thay đổi định dạng ngày trong phiên Oracle của bạn

Khi làm việc với các hàm trả về ngày tháng, Cơ sở dữ liệu Oracle trả về những ngày tháng này dựa trên giá trị của NLS_DATE_FORMAT tham số.

Ngoài ra còn có một NLS_TIMESTAMP_FORMAT và một NLS_TIMESTAMP_TZ_FORMAT , cả hai đều có mặt nạ định dạng ngày giờ có thể được chỉ định riêng.

Tất cả các tham số này đều có giá trị mặc định bắt nguồn từ NLS_TERRITORY (theo mặc định, phụ thuộc vào hệ điều hành).

Vì vậy, để thay đổi định dạng ngày cho phiên của bạn, bạn có thể cập nhật NLS_TERRITORY hoặc cập nhật rõ ràng từng tham số riêng lẻ.

Bài viết này cung cấp các ví dụ về việc kiểm tra và thay đổi các giá trị này cũng như xem kết quả.

Kiểm tra cài đặt ban đầu

Trước tiên, hãy kiểm tra cài đặt hiện tại của tôi cho NLS_DATE_FORMAT tham số:

  CHỌN THÔNG SỐ, VALUEFROM V $ NLS_PARAMETERSWHERE THAM SỐ TRONG ('NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT');  

Kết quả:

 GIÁ TRỊ THÔNG SỐ __________________________ _________________________________ NLS_TERRITORY AUSTRALIA NLS_DATE_FORMAT DD / MON / RR NLS_TIMESTAMP_FORMAT DD / MON / RR HH12:MI:SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD / MON / RR HH12:MI:SSXFF AM TZR 

Giá trị của NLS_TERRITORY của tôi tham số là AUSTRALIA và vì vậy các tham số ngày giờ khác nhau sử dụng mô hình định dạng mặc định cho Úc.

Giá trị này ảnh hưởng đến cách định dạng ngày khi chúng ta sử dụng một số hàm nhất định. Ví dụ:đây là một ví dụ về việc sử dụng SYSDATE để trả về ngày hiện tại:

  CHỌN SYSDATEFROM KÉP;  

Kết quả:

 04 / AUG / 21 

Thay đổi cài đặt

Chúng ta có thể sử dụng ALTER SESSION để thay đổi cài đặt cho các tham số này.

Chúng tôi có tùy chọn thay đổi từng tham số này riêng lẻ hoặc thay đổi NLS_TERRITORY tham số này tự động cập nhật ngầm định từng tham số đó.

Thay đổi NLS_TERRITORY Tham số

Đây là ví dụ về việc thay đổi NLS_TERRITORY tham số:

  ALTER SESSION SET NLS_TERRITORY ='AMERICA';  

Kết quả:

 Đã thay đổi phiên. 

Hãy kiểm tra các giá trị mới:

   CHỌN THÔNG SỐ, VALUEFROM V $ NLS_PARAMETERSWHERE THÔNG SỐ TRONG ('NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT');  

Kết quả:

 GIÁ TRỊ THÔNG SỐ __________________________ _______________________________ NLS_TERRITORY AMERICA NLS_DATE_FORMAT DD-MON-RR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 
AM

Vì vậy, chúng ta có thể thấy rằng, không chỉ lãnh thổ được cập nhật, các thông số ngày giờ khác nhau cũng đã được cập nhật.

Chỉ thay đổi NLS_DATE_FORMAT Tham số

Đây là ví dụ về cập nhật NLS_DATE_FORMAT tham số:

  ALTER SESSION SET NLS_DATE_FORMAT ='rr-mm-dd';  

Kết quả:

 Đã thay đổi phiên. 

Hãy kiểm tra giá trị mới:

    CHỌN THÔNG SỐ, VALUEFROM V $ NLS_PARAMETERSWHERE PARAMETER IN ('NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_SZ_TAT', 'NLS_TIMESTAMP_SZ_TAT', 'NLATIMESTAMP_SZ_TAT' ');  

Kết quả:

 GIÁ TRỊ THÔNG SỐ __________________________ _______________________________ NLS_TERRITORY AMERICA NLS_DATE_FORMAT rr-mm-dd NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 
SA

Như mong đợi, chỉ NLS_DATE_FORMAT tham số đã được thay đổi thành định dạng mới. Những cái khác vẫn không thay đổi.

Bây giờ khi chúng ta chạy SYSDATE , ngày được trả về ở định dạng mới của chúng tôi, nhưng SYSTIMESTAMP trả về nó bằng cách sử dụng NLS_TIMESTAMP_TZ_FORMAT định dạng không thay đổi:

  CHỌN SYSDATE, SYSTIMESTAMPFROM KÉP;  

Kết quả:

 SYSATE SYSTIMESTAMP ___________ _________________________________________ 21-08-09 09-AUG-21 07.22.35.402453000 PM -04:00 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle nhận giá trị tổng kiểm tra cho một đoạn dữ liệu được xác định bởi một mệnh đề chọn

  2. SQL:làm thế nào để sử dụng UNION và sắp xếp theo một lựa chọn cụ thể?

  3. Câu lệnh INSERT trong Oracle

  4. Oracle Date TO_CHAR ('Tháng DD, YYYY') có thêm khoảng trắng trong đó

  5. Danh sách các phần tử định dạng ngày giờ trong Oracle