समस्या यह है कि जावा Date
ऑब्जेक्ट एक समय क्षेत्र संग्रहीत नहीं करते हैं। मान हमेशा है यूटीसी में, और एक निश्चित समय क्षेत्र में पार्स और स्वरूपित किया जाता है, आमतौर पर जेवीएम का डिफ़ॉल्ट समय क्षेत्र।
Oracle Date
कॉलम बिना समय क्षेत्र के भी संग्रहीत किए जाते हैं, लेकिन उपयोगकर्ता द्वारा देखी गई तारीख का प्रतिनिधित्व करना चाहिए। 99.99% मामलों में, इसका मतलब है कि JVM के डिफ़ॉल्ट समय क्षेत्र में दिनांक।
तो, JDBC ड्राइवर Timestamp
लेता है / Date
मान, जो यूटीसी में है, इसे डिफ़ॉल्ट समय क्षेत्र में परिवर्तित करता है, और इसे डेटाबेस में सहेजता है।
आप PreparedStatement.setTimestamp(int parameterIndex, Timestamp x)
तरीका। समय क्षेत्र को नियंत्रित करने के लिए, PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
तरीका। जावाडोक का हवाला देते हुए: