Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyrażenie regularne określonego formatu daty

To zły pomysł. tylko sposobem sprawdzenia, czy data jest poprawna, jest próba przekonwertowania jej na datę. Jeśli konwersja się nie powiedzie, to nie jest data; jeśli się powiedzie, to może być. Daty są zbyt skomplikowane, aby można je było przeanalizować w zwykłym języku.

Stwórz więc funkcję, która konwertuje ją na datę; możesz zrobić, jeśli jest znacznie bardziej ogólny niż tutaj, dzięki czemu można go ponownie wykorzystać do innych celów:

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;

Zwraca datę, jeśli jest w stanie sprawdzić, czy format daty i daty jest zgodny, w przeciwnym razie zwraca NULL, jeśli wystąpi jakikolwiek błąd. Twoje zapytanie staje się wtedy:

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. Zbieranie zbiorcze za pomocą aktualizacji

  2. Błąd składni w instrukcji SQL słowo kluczowe „WITH” zgłaszające wyjątek

  3. Najlepsze praktyki:.NET:Jak zwrócić PK w bazie danych Oracle?

  4. zarządzanie wierszami historii w bazie danych

  5. Wstawianie wielu wierszy z sekwencją w Oracle