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

Jak zidentyfikować nieprawidłowe (uszkodzone) wartości przechowywane w kolumnach Oracle DATE?

To dość nietypowy scenariusz (choć z czymś podobnym spotkałem się już kiedyś). Najczęstszym problemem jest znajdowanie nieprawidłowych dat, które są przechowywane jako ciągi w kolumnie daty. Możesz dostosować rozwiązanie do swojej sytuacji, budując własny walidator dat.

Coś takiego:

create or replace function is_a_date 
    ( p_date in date )
    return varchar2
is
    d date;
begin
    d := to_date(to_char(p_date,  'SYYYYMMDDHH24MISS'),  'SYYYYMMDDHH24MISS') ;
    if d != p_date then
        return 'not a proper date';
    else
        return 'good date';
    end if;
exception
    when others  then
        return 'not a date';
end;
/ 

To konwertuje datę na ciąg i z powrotem. Przechwytuje wyjątki zgłoszone przez rzutowanie dat. Jeśli produkt końcowy nie jest taki sam jak data wejściowa, to prawdopodobnie coś zgubiło się w tłumaczeniu; szczerze mówiąc nie jestem pewien, czy data 12011 z powodzeniem rzuci się na sznurek, więc jest to podejście belt'n'braces. Pisanie tego narzędzia bez danych testowych jest trochę trudne!

To zapytanie zidentyfikuje wszystkie niepoprawne daty:

 select h.id, dump(h.bid_close_date)
 from mytable h 
 where h.bid_close_date is not null
 and is_a_date(h.bid_close_date) != 'good date';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SPRAWDŹ ograniczenie daty urodzenia?

  2. Klastry zliczające SQL Oracle

  3. ORA-01438:wartość większa niż określona precyzja dozwolona dla tej kolumny podczas wstawiania 3

  4. Pierwsze kroki z Oracle SQL Developer w systemie Windows

  5. Jak ustawić niestandardowy format daty i godziny w Oracle SQL Developer?