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

Cách xác thực ngày YYYYMMDD được cung cấp dưới dạng tham số PL / SQL

convert(varchar(10), pdate(), 111) dường như là một nỗ lực sử dụng convert của SQL Server hàm số. Điều đó sẽ không hoạt động trong Oracle.

Tôi chỉ muốn làm một cái gì đó giống như

DECLARE
  l_dt date;
BEGIN
  l_dt := to_date( pdate, 'yyyymmdd' );
EXCEPTION
  WHEN others
  THEN
    raise_application_error( -20001, pdate || ' is not a date in the format YYYYMMDD' );
END;

Tất nhiên, nếu bạn muốn thực hiện nhiều lần kiểm tra để bạn có thể đưa ra một ngoại lệ khác nếu độ dài không chính xác hoặc thêm một số kiểm tra để đảm bảo rằng ngày là hợp lý (nghĩa là phải trong vòng 100 năm qua hoặc không quá 100 năm trong tương lai, v.v.) bạn có thể làm điều đó sau to_date chuyển đổ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. Trường trong tệp dữ liệu vượt quá độ dài tối đa - lỗi

  2. Loại dữ liệu bản ghi dựa trên con trỏ với con trỏ trả về nhiều giá trị trong cơ sở dữ liệu Oracle

  3. Tham gia loại bỏ không hoạt động trong Oracle với các truy vấn phụ

  4. Thông báo thay đổi cơ sở dữ liệu Oracle với ODP.NET không hoạt động

  5. Sử dụng bộ giá trị trong mệnh đề ORACLE IN và điều kiện cho một phần tử trong bộ giá trị