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

उन पंक्तियों को अनदेखा करने के लिए चयन विवरण में to_date अपवादों को कैसे संभालें?

टोनी की टिप्पणी को प्रतिध्वनित करते हुए, आप इन अपवादों को खोजने और संभालने के लिए फ़्रंट-एंड क्वेरी टूल को मजबूर करने के बजाय DATE कॉलम में तारीखों को संग्रहीत करना बेहतर समझते हैं।

यदि आप गलत डेटा मॉडल के साथ फंस गए हैं, हालांकि, पुराने संस्करणों में सबसे आसान विकल्प एक ऐसा फ़ंक्शन बनाना है जो रूपांतरण करता है और त्रुटि को संभालता है,

CREATE OR REPLACE FUNCTION my_to_date( p_date_str IN VARCHAR2,
                              p_format_mask IN VARCHAR2 )
  RETURN DATE
IS
  l_date DATE;
BEGIN
  l_date := to_date( p_date_str, p_format_mask );
  RETURN l_date;
EXCEPTION
  WHEN others THEN
    RETURN null;
END my_to_date;

तब आपकी क्वेरी बन जाएगी

SELECT * 
  FROM myTable
 WHERE my_to_date(myTable.sdate, 'MM/dd/yyyy') <= {?EndDate}

बेशक, आप MY_TO_DATE पर फ़ंक्शन-आधारित अनुक्रमणिका चाहते हैं इस क्वेरी को यथोचित रूप से कुशल बनाने के लिए कॉल करें।

12.2 में, Oracle ने to_date . में एक्सटेंशन जोड़े हैं और cast त्रुटि वाले रूपांतरणों को संभालने के लिए कार्य करता है

SELECT * 
  FROM myTable
 WHERE to_date(myTable.sdate default null on conversion error, 'MM/dd/yyyy') <= {?EndDate}

आप validate_conversion . का भी उपयोग कर सकते हैं फ़ंक्शन यदि आप उन सभी पंक्तियों की तलाश कर रहे हैं जो मान्य तिथियां हैं (या नहीं हैं)।

SELECT *
  FROM myTable 
 WHERE validate_conversion( myTable.sdate as date, 'MM/DD/YYYY' ) = 1 


  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 डेटाबेस से एक्सेल स्प्रेडशीट बनाएं

  3. HEXTORAW () Oracle में फ़ंक्शन

  4. मैं DBMS_METADATA (और SCHEMA_EXPORT) के साथ DDL स्क्रिप्ट के रूप में Oracle SCHEMA कैसे प्राप्त करूं?

  5. मैं ऑब्जेक्ट प्रकारों की नेस्टेड तालिकाओं के साथ Oracle तालिका कैसे बनाऊं?