अगर start_date
शून्य है, कोई अपवाद नहीं फेंका गया है।
select to_date( null, 'mm/dd/yyyy' )
from dual
एक पूरी तरह से मान्य SQL कथन है जो NULL देता है।
आपको जो त्रुटि मिल रही है, उसका तात्पर्य यह है कि start_date
. में कम से कम कुछ पंक्तियाँ कॉलम वास्तव में उस प्रारूप में तार नहीं हैं जिसकी आप अपेक्षा करते हैं या वह मानचित्र अमान्य तिथियों (यानी स्ट्रिंग '13/35/2007') के लिए है। आप एक फ़ंक्शन लिख सकते हैं जो यह देखने के लिए परीक्षण करता है कि क्या स्ट्रिंग को किसी दिनांक में परिवर्तित किया जा सकता है और या तो परिवर्तित दिनांक या NULL लौटा सकता है। फिर आप to_date
. के बजाय उसका उपयोग कर सकते हैं ।
CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2,
p_format IN VARCHAR2 )
RETURN DATE
IS
BEGIN
RETURN to_date( p_str, p_format );
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END;
और फिर my_to_date
. का उपयोग करें to_date
. के बजाय . इससे आपको जो त्रुटि मिल रही है उसे खत्म करना चाहिए। हालांकि, अमान्य स्ट्रिंग्स से छुटकारा पाने के लिए आप शायद डेटा को साफ़ करना चाहेंगे।