Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle दिनांक कॉलम में संग्रहीत अमान्य (दूषित) मानों की पहचान कैसे करें

यह एक बहुत ही असामान्य परिदृश्य है (हालाँकि मैं पहले भी एक बार ऐसा ही कुछ देख चुका हूँ)। अधिक आम समस्या अमान्य तिथियां ढूंढ रही है जो दिनांक कॉलम में स्ट्रिंग के रूप में आयोजित की जाती हैं। आप अपना स्वयं का दिनांक सत्यापनकर्ता बनाकर, इसके लिए समाधान को अपनी स्थिति में अनुकूलित कर सकते हैं।

कुछ इस तरह:

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;
/ 

यह एक तारीख को एक स्ट्रिंग में परिवर्तित करता है और फिर से वापस आ जाता है। यह तारीख कास्टिंग द्वारा फेंके गए अपवादों को पकड़ता है। यदि अंतिम उत्पाद इनपुट तिथि के समान नहीं है तो संभवतः अनुवाद में कुछ खो गया है; ईमानदार होने के लिए मुझे यकीन नहीं है कि 12011 की तारीख सफलतापूर्वक एक स्ट्रिंग पर डाली जाएगी, इसलिए यह एक बेल्ट'न'ब्रेसेस दृष्टिकोण है। कुछ परीक्षण डेटा के बिना इस उपयोगिता को लिखना थोड़ा मुश्किल है!

यह क्वेरी सभी गैर-वैध तिथियों की पहचान करेगी:

 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. Oracle:डुप्लीकेट कुंजी अद्यतन पर

  2. Oracle में REGEXP_COUNT () फ़ंक्शन

  3. Oracle में ऑडिटिंग

  4. Oracle/SQLite में एक स्ट्रिंग से सबस्ट्रिंग कैसे निकालें?

  5. Oracle के साथ AWS पायथन लैम्ब्डा