Oracle
 sql >> база данни >  >> RDS >> Oracle

Редовен израз на конкретен формат на датата

Това е лоша идея. Единственият начинът да потвърдите, че дадена дата е правилна, е да се опитате да я конвертирате в дата. Ако преобразуването е неуспешно, това не е дата; ако е успешно, тогава може бъда. Датите са твърде сложни, за да бъдат анализирани от обикновен език.

И така, създайте функция, която го преобразува в дата; можете да направите много по-общо, отколкото имате тук, така че след това да може да се използва повторно за други цели:

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;

Това връща дата, ако може да потвърди, че датата и форматът на датата съвпадат, в противен случай връща NULL, ако има грешка. Вашата заявка тогава става:

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. Как да направя текущи суми от втората колона

  2. PDO_OCI - в поле clob

  3. Как да извлека резултат от функцията на база данни на Oracle чрез ODBC?

  4. Рекурсия в Oracle

  5. Oracle 11g получава всички съвпадащи събития чрез регулярен израз