Add_months() फ़ंक्शन का आपका उपयोग गलत है। यह दो शब्द नहीं है, यह सिर्फ एक है (अंडरस्कोर के साथ)
add_months(datesold, 1)
अंडरस्कोर नोट करें _
ADD
. के बीच और MONTHS
. यह फंक्शन कॉल है, ऑपरेटर नहीं।
वैकल्पिक रूप से आप उपयोग कर सकते हैं:
datesold + INTERVAL '1' month
हालांकि यह ध्यान देने योग्य है कि अंतराल के साथ अंकगणित सीमित है (यदि टूटा नहीं है) क्योंकि यह केवल दिनांक मान के महीने के मूल्य को "वृद्धि" करता है। इससे अमान्य तिथियां हो सकती हैं (जैसे जनवरी से फरवरी तक)। हालांकि यह प्रलेखित व्यवहार है (नीचे लिंक देखें) मैं इसे एक बग मानता हूं (एसक्यूएल मानक के लिए उन कार्यों की आवश्यकता होती है "अंकगणित दिनांक और समय से जुड़े प्राकृतिक नियमों का पालन करते हैं और ग्रेगोरियन कैलेंडर के अनुसार वैध डेटाटाइम या अंतराल परिणाम प्राप्त करते हैं /em> ")
विवरण के लिए मैनुअल देखें:
http ://docs.oracle.com/cd/E11882_01/server.112/e26088/functions011.htm#i76717
http://docs.oracle .com/cd/E11882_01/server.112/e26088/sql_elements001.htm#i48042
एक और बात:
तो फिर आप एक INSERT
का उपयोग क्यों कर रहे हैं? बयान? मौजूदा पंक्तियों के डेटा को बदलने के लिए आपको UPDATE
. का उपयोग करना चाहिए . तो ऐसा लगता है कि आप वास्तव में जो चाहते हैं वह कुछ इस प्रकार है:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';