10

मैं अपने डीबी के टाइमज़ोन फ़ील्ड के साथ एक टाइमस्टैम्प में डालने की कोशिश कर रहा हूं जिसमें एक स्ट्रिंग है जिसमें तैयार कथन का उपयोग करके दिनांक, समय और समय क्षेत्र शामिल है।मैं तैयार कथन के साथ postgresql में टाइमज़ोन के साथ टाइमस्टैम्प कैसे डाल सकता हूं?

समस्या यह है कि Timestamp.valueof फ़ंक्शन उस समय क्षेत्र को ध्यान में नहीं रखता है जो स्ट्रिंग को जोड़ता है जिससे यह त्रुटि उत्पन्न करता है। स्वीकार्य प्रारूप yyyy- [m] m- [d] d hh: mm: ss [.f ...] जो टाइमज़ोन का उल्लेख नहीं करता है।

सटीक कोड है कि त्रुटि का कारण बनता है कि:

pst.setTimestamp (2, Timestamp.valueOf ("2012-08-24 14:00:00 02: 00"))

क्या कोई रास्ता है कि मैं इसे दूर कर सकता हूं ?? अग्रिम धन्यवाद!

उत्तर

1

मुझे विश्वास है कि आप अपने डेटाबेस में एक और फ़ील्ड का उपयोग कर सकते हैं, जिसमें समय क्षेत्र शामिल होगा। और इन दो क्षेत्रों को प्राप्त करने के बाद मैन्युअल रूप से समय की गणना करें

+0

ठीक है यह एक स्वीकार्य तरीका है, लेकिन मैं अगर वहाँ afored उल्लेख माध्यम से यह कर के किसी भी तरह से है पता करने के लिए करना चाहते हैं। –

3

मूल समस्या यह है कि java.sql.Timestamp में टाइमज़ोन जानकारी नहीं होती है। मुझे लगता है कि इसे हमेशा "स्थानीय टाइमज़ोन" माना जाता है।

समाधान मैं एक PreparedStatement में एक पैरामीटर का उपयोग नहीं करने के लिए है के बारे में सोच सकते हैं, लेकिन SQL में एक समय क्षेत्र शाब्दिक:

update foo 
    set ts_col = timestamp with time zone '2012-08-24 14:00:00 +02:00'`; 

एक अन्य संभावित समाधान एक PrepareStatement का उपयोग करता है करने के लिए उचित रूप से स्वरूपित स्ट्रिंग पारित करने के लिए हो सकता है to_timestamp():

String sql = "update foo set ts_col = to_timestamp(?, 'yyyy-mm-dd hh24:mi:ss')"; 
PreparedStatement pstmt = connection.prepareStatement(sql); 
pstmt.setString(1, "2012-08-24 14:00:00 +02:00"); 
+0

क्या हमें टाइम_ऑन to_timestamp() के दिनांक प्रारूप में शामिल नहीं करना चाहिए? –

+0

@MichelangeloVandilakis: इसे दूसरे उदाहरण में शामिल किया गया है (यह '?' प्लेसहोल्डर के ठीक बाद है)। पहला उदाहरण * नहीं * 'to_timstamp()' पर कॉल है, लेकिन एक टाइमस्टैम्प * शाब्दिक * जिसे विशिष्ट नियमों का पालन करना है। –

+0

शायद मैंने इसे सही नहीं लिखा था। मेरा मतलब है कि प्रारूप में केवल वर्ष, महीना, दिन का समय, मिनट, सेकंड शामिल है लेकिन यह दिखाने के लिए कुछ भी नहीं है कि टाइमज़ोन शामिल है –

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