2010-07-16 12 views
26

मैं अपने परिणामसेट.getडेट (x) कॉल में सटीकता खो रहा हूं। मूल रूप से:जेडीबीसी परिणामसेट GetDate सटीक खोने

rs = ps.executeQuery(); 
rs.getDate("MODIFIED"); 

दिन जहां संशोधित डिफ़ॉल्ट परिशुद्धता के एक Oracle TIMESTAMP क्षेत्र है तक छोटा कर दिया दिनांकों लौटा रहा है। मुझे लगता है कि कुछ जेडीबीसी ट्वीक हो सकता है जो मुझे याद आ रही है; आमतौर पर TIMESTAMP DATE के साथ संगत है, लेकिन मुझे आशा है कि मुझे पूरी तालिका को फिर से परिभाषित करने की आवश्यकता नहीं है।

उत्तर

62

ResultSet.getDate()java.sql.Date देता है, java.util.Date नहीं। यह एक कालातीत तारीख के रूप में परिभाषित किया गया है। यदि आप टाइमस्टैम्प चाहते हैं, तो ResultSet.getTimestamp() का उपयोग करें!

+4

स्वयं को आरटीएफएम पर ध्यान दें। मैंने सोचा कि यह अन्य स्थानों पर काम कर रहा था। – orbfish

+1

"java.sql.Date को एक कालातीत दिनांक माना जाता है"। उस वक्तव्य ने मेरी जान बचाई है। धन्यवाद! – Tiago

4

आपको java.sql.Date के बजाय java.sql.Timestamp का उपयोग करना चाहिए। यदि आप आवश्यक हो तो इसे java.util.Date ऑब्जेक्ट के रूप में उपयोग कर सकते हैं।

rs = ps.executeQuery(); 
Timestamp timestamp = rs.getTimestamp("MODIFIED"); 

उम्मीद है कि इससे मदद मिलती है।

+2

'टाइम डेटैम्प दिनांक दिनांक 'के बाद से' नई तिथि 'का निर्माण अनावश्यक है। – BalusC

0

टाइमस्टैप का उपयोग करना सही तरीका है। कृपया यह न लें कि टिमस्टैम्प के साथ आप कॉलम को शून्य से सेट करने में सक्षम नहीं होंगे यदि आप लिक्विबेस का उपयोग करना चाहते हैं।

एक समस्या मैं भी साथ आया।

संबंधित मुद्दे