2012-11-07 6 views
6

पर to_char (myDate, 'DAY') के परिणाम की तुलना करते समय समस्या मैं यह जानने का प्रयास कर रहा हूं कि समस्या क्या हो सकती है लेकिन मैं भाग्य से बाहर हूं और इस समस्या को बिल्कुल समझ नहीं पा रहा हूं। मेरे पास निम्नलिखित कोड:एक स्ट्रिंग

CREATE OR REPLACE FUNCTION ckeckDay(dateC in date) 
RETURN VARCHAR 
IS 
    day VARCHAR(15); 
    checkFriday VARCHAR(1); 
BEGIN 
    checkFriday := 'N'; 
    day := to_char(dateC, 'DAY'); 
    IF day = 'FRIDAY' THEN 
    checkFriday := 'Y'; 
    END IF; 
    RETURN day; 
END; 
/

dateC शुक्रवार तक के लिए निर्धारित है (यहां तक ​​कि यह day चर के बजाय day वापस लौट कर परीक्षण किया है और आज शुक्रवार देता है।) हालांकि IF बयान सही करने के लिए कभी नहीं का मूल्यांकन करता है, भले ही day चर वास्तव में शुक्रवार है कोई भी विचार इस मुद्दे के आसपास कैसे जाना है। धन्यवाद

उत्तर

3

यह ऐसा इसलिए है क्योंकि day चर में एक खाली पैड किए गए मान होते हैं। अग्रणी और पीछे वाले स्पेस से छुटकारा पाने के trim समारोह का उपयोग करें:

IF trim(day) = 'FRIDAY' THEN 
    checkFriday := 'Y'; 
END IF; 

और स्ट्रिंग चर के लिए VARCHAR2 डेटाप्रकार का इस्तेमाल करें। VARCHAR का उपयोग न करें।

+0

धन्यवाद आपके उत्तर के लिए धन्यवाद। यह पूरी तरह से काम करता है। टिप के लिए भी धन्यवाद। – Tohmas

10

यदि आप इसके बारे में वास्तव में मजबूत होना चाहते हैं तो आपको एनएलएस सेटिंग को अंग्रेजी में मजबूर करना होगा और अग्रणी और पिछली जगहों को ट्रिम करने के लिए "भरने मोड" प्रारूप मॉडल एफएम लागू करना होगा।

If To_Char(DateC,'fmDAY', 'nls_date_language=english') = 'FRIDAY' 
Then ... 
+0

धन्यवाद, इसका भी उपयोग करेगा। – Tohmas