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

Làm sạch cột Ngày của Oracle

Đây là một trong những lý do khiến việc lưu trữ thông tin ngày tháng trong trường ký tự là một ý tưởng tồi.

Tùy chọn dễ nhất là tạo một hàm cố gắng chuyển đổi chuỗi thành ngày bằng cách sử dụng các định dạng theo bất kỳ thứ tự ưu tiên nào mà bạn có (tức là 010203 ngày 2 tháng 1 năm 2003 hoặc ngày 3 tháng 2 năm 2001 hoặc thứ gì đó khác) và bắt các trường hợp ngoại lệ. Một cái gì đó giống như

CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2 )
  RETURN DATE
IS
  l_date DATE;
BEGIN
  l_date := to_date( p_str, 'YYYYMMDD' );
  RETURN l_date;
EXCEPTION
  WHEN others THEN
    BEGIN
      l_date := to_date( p_str, 'MM/DD/YYYY' );
      RETURN l_date;
    EXCEPTION 
      WHEN others
      THEN
        RETURN null;
    END;
END;

cái gì đó hoạt động giống như

SQL> CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2 )
  2    RETURN DATE
  3  IS
  4    l_date DATE;
  5  BEGIN
  6    l_date := to_date( p_str, 'YYYYMMDD' );
  7    RETURN l_date;
  8  EXCEPTION
  9    WHEN others THEN
 10      BEGIN
 11        l_date := to_date( p_str, 'MM/DD/YYYY' );
 12        RETURN l_date;
 13      EXCEPTION
 14        WHEN others
 15        THEN
 16          RETURN null;
 17      END;
 18  END;
 19  /

Function created.

SQL> select my_to_date( '19000101' ) from dual;

MY_TO_DAT
---------
01-JAN-00

SQL> ed
Wrote file afiedt.buf

  1* select my_to_date( '01/02/2005' ) from dual
SQL> /

MY_TO_DAT
---------
02-JAN-05

Tất nhiên, bạn phải viết mã tập hợp đầy đủ các định dạng ngày hợp lệ trong mã của mình, tôi chỉ xử lý hai định dạng đầu tiên trong danh sách của bạn.



  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ông thể tạo trường hợp lỗi nhà cung cấp OLE DB với tư cách là người dùng Xác thực Windows

  2. Có thể truy vấn cột được phân tách bằng dấu phẩy cho một giá trị cụ thể không?

  3. EBS 12.2.5 trở lên:Sai lệch nút trang đăng nhập

  4. Phương pháp dễ nhất để kiểm tra một thủ tục được lưu trữ của Oracle

  5. Truy vấn con trong oracle là gì