मेरे पास DATETIME
का एक स्तंभ है जो MySQL डेटाबेस में 2012-05-07 19:59:12
का मान है।getTimestamp() MySQL जेडीबीसी कनेक्टर में दो बार टाइमज़ोन कनवर्जन करता है?
Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "UTC"));
Date date = resultSet.getTimestamp(1, cal);
System.out.println(date);
यह आउटपुट (CEST
मेरे स्थानीय समय क्षेत्र है, जो 2 घंटे यूटीसी से आगे है):
Mon May 07 23:59:12 CEST 2012
मैं यह सोचते हैं कि यह यूटीसी समय क्षेत्र में संग्रह किया गया है डीबी से मान प्राप्त करने के लिए कोशिश कर रहा हूँ,
लिए अपेक्षित मान है:
Mon May 07 21:59:12 CEST 2012
मैं JDBC यूआरएल में इन तीन पैरामीटर उपयोग कर रहा हूँ (Europe/Berlin
CEST
के समान है):
..&useGmtMillisForDatetimes=true&useTimezone=true&serverTimezone=Europe/Berlin
क्या यह मेरा दोष है या कुछ जेडीबीसी ड्राइवर में अतिरिक्त रूप से कॉन्फ़िगर किया जाना चाहिए? मैं mysql:mysql-connector-java:5.1.20
का उपयोग कर रहा हूँ।
मुझे लगता है कि आप कर रहे हैं कि यह एक थोड़ा और अधिक जटिल की तुलना में यह करने की जरूरत है। जेडीबीसी कैलेंडर के साथ टाइमस्टैम्प को पुनर्प्राप्त करने का समर्थन करता है जब डेटाबेस टाइमज़ोन का समर्थन नहीं करता है। MySQL करता है, तो यह अनावश्यक है। आप (शायद) jdbc url पर भी सभी कस्टम सेटिंग्स के बारे में भूल सकते हैं। बस GetDate() का उपयोग करें, और आपको java.util.Date मिलेगा, जो टाइमज़ोन स्वतंत्र है जब तक आप इसे किसी विशिष्ट टाइमज़ोन के साथ प्रारूपित नहीं करते। – GreyBeardedGeek
ठीक है, यह इस प्रकार काम करता है: 'और उपयोग GmtMillisForDatetimes = true और useJDBCCompliantTimezoneShift = true और useLegacyDatetimeCode = false & useTimezone = true और serverTimezone = UTC', लेकिन आपके सुझाव के लिए धन्यवाद, मैं इसे – yegor256