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

Biểu thức chính quy của một định dạng Ngày cụ thể

Đây là một ý tưởng tồi. duy nhất cách xác thực rằng một ngày là chính xác là cố gắng chuyển đổi nó thành một ngày. Nếu chuyển đổi không thành công thì đó không phải là một ngày; nếu nó thành công thì nó có thể thì là ở. Ngày tháng quá phức tạp để một ngôn ngữ thông thường có thể phân tích cú pháp.

Vì vậy, hãy tạo một hàm chuyển đổi nó thành ngày tháng; bạn có thể tạo ra nếu chung chung hơn nhiều so với những gì bạn có ở đây, vì vậy nó có thể được sử dụng lại cho các mục đích khác:

create or replace function validate_date (
     PDate in varchar2
   , PDateFormat in varchar2
     ) return date is
begin
   return to_date(PDate, PDateFormat);
exception when others then
   return null;
end;

Điều này trả về một ngày nếu nó có thể xác thực rằng ngày tháng và định dạng ngày trùng khớp, ngược lại trả về NULL nếu có bất kỳ lỗi nào. Khi đó, truy vấn của bạn sẽ trở thành:

select 'P' from dual where validate_date('20140506', 'yyyymmdd') is not null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00918:cột được xác định không rõ ràng trong SELECT *

  2. Oracle có cho phép tùy chọn đọc không cam kết không?

  3. Cột tuyệt vời nhất không rỗng

  4. Nhà cung cấp dữ liệu Oracle mới nhất cho .NET (11.2.0.3.20) phá vỡ Trình hướng dẫn cập nhật EF

  5. Cơ sở dữ liệu Oracle Regex để lặp lại nhóm ký tự