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

Cách định dạng ngày trong Oracle

Bài viết này chứa các ví dụ phổ biến về định dạng ngày tháng trong Cơ sở dữ liệu Oracle.

Định dạng ngày mặc định cho phiên của bạn được xác định bởi các thông số khởi tạo NLS khác nhau (đây là cách kiểm tra chúng). Bạn có thể tận dụng các tham số này để xuất định dạng nhận biết ngôn ngữ.

Bạn cũng có thể sử dụng các hàm như TO_CHAR(number) để chuyển đổi ngày tháng thành một chuỗi và định dạng chúng chính xác như bạn muốn một cách nhanh chóng.

Định dạng ngày mặc định

Theo mặc định, khi bạn trả về một ngày trong Oracle, nó được trả về ở định dạng ngày mặc định cho phiên hiện tại.

Ví dụ:

SELECT DATE '2030-12-10' FROM DUAL;

Kết quả:

10/DEC/30

Trong trường hợp này, định dạng ngày mặc định của phiên của tôi là DD/MON/RR , và do đó kết quả phản ánh điều đó.

Bạn có thể thay đổi định dạng bằng cách thay đổi NLS_TERRITORY tham số (thay đổi hoàn toàn các tham số khác như tham số ngày giờ) hoặc thay đổi NLS_DATE_FORMAT tham số trực tiếp.

Đây là những gì sẽ xảy ra khi tôi thay đổi NLS_TERRITORY tham số đến một lãnh thổ khác:

ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;

Kết quả:

10.12.30

Định dạng ngày mặc định đã được cập nhật để phản ánh định dạng cho ngôn ngữ đó.

Ngoài ra còn có các tham số NLS ngày giờ khác, chẳng hạn như NLS_TIME_FORMAT , NLS_TIME_TZ_FORMAT , NLS_TIMESTAMP_FORMAT NLS_TIMESTAMP_TZ_FORMAT mà bạn cần lưu ý khi thay đổi định dạng ngày giờ.

Ngoài ra, hãy xem Cách thay đổi định dạng ngày của phiên nếu bạn muốn thay đổi định dạng ngày giờ mặc định cho phiên hiện tại của mình.

TO_CHAR() Chức năng

T he TO_CHAR(datetime) hàm chấp nhận một giá trị ngày giờ và trả về một chuỗi được định dạng theo cách mà bạn chỉ định.

Dưới đây là một ví dụ nhanh:

SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY'
    )
FROM DUAL;

Kết quả:

Wed, 26 September 2035

Ở đây, hàm trả về ngày được cung cấp trong đối số đầu tiên, theo định dạng được chỉ định bởi đối số thứ hai.

Đối số thứ hai cung cấp mô hình định dạng. Mô hình định dạng có thể bao gồm một hoặc nhiều phần tử định dạng. Ví dụ:Dy là một phần tử định dạng, cũng như DD , Month , v.v.

Nếu bạn không chỉ định một định dạng, nó sẽ được trả về bằng cách sử dụng định dạng mặc định cho phiên.

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

Dưới đây là các ví dụ cụ thể hơn.

Trả lại tên ngày

Bạn có thể trả lại từng phần ngày tháng nếu được yêu cầu. Ví dụ:bạn có thể trả về chỉ tên ngày, chỉ tên tháng, v.v. Tất cả những gì bạn cần làm là sử dụng phần tử định dạng áp dụng làm phần tử định dạng duy nhất trong mô hình định dạng của bạn.

Dưới đây là một ví dụ về việc trả lại tên ngày:

SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;

Kết quả:

Wednesday

Trong trường hợp này, tôi đã trả lại tên đầy đủ của ngày.

Chúng ta có thể sử dụng Dy như trong ví dụ trước đó để trả về tên ngày ngắn:

SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;

Kết quả:

Wed

Trả lại tên tháng

Dưới đây là một ví dụ về việc trả lại tên tháng:

SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;

Kết quả:

September

Và tên tháng ngắn:

SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;

Kết quả:

September

Phân biệt chữ hoa chữ thường

Trong các ví dụ trước, chúng tôi viết hoa chữ cái đầu tiên cho tên ngày và tháng.

Ngoài ra, chúng ta có thể sử dụng tất cả các chữ hoa để trả về tên ngày và tháng ở dạng chữ hoa và tất cả chữ thường để trả lại chúng ở dạng chữ thường.

SELECT 
    TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;

Kết quả:

WED, Wed, wed                           
WEDNESDAY, Wednesday, wednesday         
SEP, Sep, sep                           
SEPTEMBER, September, september         

Ngôn ngữ

NLS_DATE_LANGUAGE tham số được sử dụng để xác định ngôn ngữ của các phần ngày được viết ra (chẳng hạn như tên ngày và tên tháng). Giá trị mặc định của thông số này được lấy từ NLS_LANGUAGE tham số.

Đây là ví dụ về cập nhật NLS_DATE_LANGUAGE , sau đó trả về một ngày được định dạng bao gồm tên ngày và tên tháng:

ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;

Kết quả:

Mié, 26 Septiembre 2035

Ngôn ngữ cũng có thể được chỉ định rõ ràng từ trong TO_CHAR() chức năng của chính nó. Làm điều này cho phép bạn tạm thời ghi đè cài đặt ngôn ngữ mặc định cho phiên hiện tại mà không ảnh hưởng đến các cài đặt đó.

Ví dụ:

ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY',
    'NLS_DATE_LANGUAGE = Spanish'
    )
FROM DUAL;

Kết quả:

Mié, 26 Septiembre 2035

Trong ví dụ này, tôi đặt phiên hiện tại của mình để sử dụng tiếng Anh, sau đó chạy một truy vấn để xuất ra một ngày bằng tiếng Tây Ban Nha.

Như đã ám chỉ trước đây, việc xuất ngày tháng bằng tiếng Tây Ban Nha không ảnh hưởng đến cài đặt tiếng Anh. Để chứng minh điều này, tôi đã chạy truy vấn sau ngay sau truy vấn đó (mà không thay đổi NLS_DATE_LANGUAGE tham số).

SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY'
    )
FROM DUAL;

Kết quả:

Wed, 26 September 2035

Như mong đợi, kết quả là tiếng Anh, là ngôn ngữ mặc định cho phiên hiện tại.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có thể sử dụng regex để chia một chuỗi, sử dụng một chuỗi làm dấu phân cách?

  2. Tham số thời gian chờ IDLE trong Oracle

  3. Điền mục cây với nhóm bản ghi trong các biểu mẫu Oracle

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

  5. Kết nối Oracle với SQL Server từ Windows