2015-10-02 10 views
5

मैं दिनांक फ़ील्ड जावा PreparedStatement का उपयोग करके "0001-01-01" मान को एक मान के रूप में "0001-01-01" डालना चाहता हूं।जेडीबीसी 4 डालने की तिथि "0001-01-01"

लेकिन यह अपवाद फेंकता है जब मैं इस की कोशिश की:

String sql = "insert into mytable values(?)" 
ps = conn.prepareStatement(sql); 
ps.setDate(1, java.sql.Date.valueOf("0001-01-01")); 
ps.executeUpdate(); // throws exceptions here. 

त्रुटि है:

आपूर्ति मूल्य डेटा प्रकार datetime का एक मान्य उदाहरण नहीं है। अमान्य मानों के लिए स्रोत डेटा देखें। अमान्य मान का एक उदाहरण अंकीय प्रकार का डेटा है जिसमें परिशुद्धता से अधिक पैमाने है।

  • अगर मैं PreparedStatement का उपयोग नहीं करते, मैं "0001-01-01" सम्मिलित कर सकते हैं। हालांकि, तैयार कथन मुझे इस मान को सम्मिलित करने की अनुमति नहीं देता है।

  • अगर मैं "0001-01-01" के बजाय "1 9 6 9-01-01" डाला तो यह काम करेगा।

कोई विचार?

अद्यतन: यहां अधिक जानकारी की आवश्यकता हो सकती है।

  1. हम एसक्यूएल सर्वर का उपयोग 2012
  2. हम "0001-01-01" का उपयोग करने की वजह से इन मूल्यों को पहले से ही वहाँ थे की है। मैं तैयार कथन का उपयोग करने के लिए कुछ बहुत पुराने कोड बदल रहा हूं। तो मुझे एक ही कार्यक्षमता में वही मान डालना होगा।

अपडेट 2:

  • हम प्रयोग कर रहे हैं "तारीख" डेटाप्रकार, नहीं "datetime" डेटाप्रकार। इस https://msdn.microsoft.com/en-us/library/bb630352.aspx के आधार पर, "0001-01-01" "दिनांक" फ़ील्ड के लिए सीमा से बाहर नहीं है।

इसके अतिरिक्त, मैं तैयार कथन का उपयोग किए बिना दिनांक फ़ील्ड में "0001-01-01" डालने में सक्षम हूं। यानी

String sql = "insert into mytable values('0001-01-01')" 
    java.sql.Statement statement = conn.createStatement(); 
    statement.executeUpdate(sql); 

तो यह एसक्यूएल सर्वर की समस्या या डीबी क्षेत्र की समस्या नहीं है।

+0

01-01-19 00 – sagi

+0

खाली तिथि का प्रतिनिधित्व करने के लिए किसी अन्य तारीख का उपयोग करने का प्रयास करें '.valueOf (...)'; – Hannes

+1

के स्रोत कोड पर एक त्वरित नज़र डालें, आप किस जेडीबीसी ड्राइवर जेएआर का उपयोग कर रहे हैं? जेटीडीएस या माइक्रोसॉफ्ट? और कौन सा संस्करण? –

उत्तर

0

क्या आपने नई java.sql.Date (नई तिथि (1,1,1)) के साथ प्रयास किया है?

+0

मैंने अभी कोशिश की है। पहली बार नई तारीख (1,1,1) बहिष्कृत है। दूसरा, यह त्रुटियों के बिना काम करता है, लेकिन यह 0001-01-01 के बजाय 1 9 00-01-01 स्टोर करता है। – Joey

0

विभिन्न उपयुक्त जेडीबीसी ड्राइवर का उपयोग करने का प्रयास करें।