2012-05-25 9 views
8

मेरे पास एक जेडीबीसी वर्तमान दिनांक और समय माइस्क्ल डेटाबेस में डालें।जावा में डेटाटाइम

यह वर्तमान दिनांक और एक निश्चित समय को MySQL दिनांक प्रकार फ़ील्ड में 2012/05/25 00:00:00 के रूप में प्रस्तुत करता है। दिनांक भाग बहुत अच्छा काम करता है लेकिन समय कोई मूल्य नहीं दिखाता है।

मैं निम्नलिखित कोड के साथ मूल्य डालने हूँ:

java.util.Date myDate = new java.util.Date(); 
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime()); 
PreparedStatement PStmt = con.prepareStatement(Sql query); 
PStmt.setDate(1,sqlDate); 
+0

क्या आप उस कोड को पेस्ट कर सकते हैं जो तारीख को सम्मिलित करता है? डेटाबेस में आप किस प्रकार के कॉलम का उपयोग करते थे? – pablochan

+0

java.util.Date myDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date (myDate.getTime());
तैयार स्टोरेज PStmt = con.prepareStatement (एसक्यूएल क्वेरी);
PStmt.setDate (1, sqlDate); – Narayan

+0

MySQL में कॉलम का प्रकार क्या है? – dbf

उत्तर

1

1) अपने जावा क्लास में java.util.Date का उपयोग करें।

2) mysql में डेटाटाई TIMESTAMP सेट करें।

Date CreatedDate= new Date(System.currentTimeMillis()); 

PreparedStatement के लिए: यह इस तरह से हो सकता है:

PreparedStatement PStmt = con.prepareStatement(Sql query); 
PStmt.setDate(1,CreatedDate); 
+0

इस निर्मित दिनांक – Narayan

+3

के लिए तैयार कथन क्या होना चाहिए यह मेरे लिए काम नहीं करता क्योंकि यह समय खो देता है। SetTimestamp (...) –

2

मैं तुम्हें mysql में स्तंभ प्रकार के रूप में टाइमस्टैम्प की आवश्यकता है लगता है।

+0

DATETIME भी ठीक हो सकता है – bpgergo

2

मैं java.util.Date और java.sql.Date

java.util.Date vs java.sql.Date

संपादित के बीच अंतर नोट करने के लिए सुझाव है कि यह भी सुनिश्चित करें कि आप डेटाबेस (तिथि, DATETIME, या TIMESTAMP)

में उचित डेटा प्रकार है बनाना http://dev.mysql.com/doc/refman/5.1/en/datetime.html

16

उपयोग java.sql.Timestamp बजाय java.util.Date

उदाहरण के लिए यदि आप अपने डालने को संभालने के लिए PreparedStatement उपयोग कर रहे हैं, आप के रूप में अपनी तिथि पारित कर सकते हैं ;

java.util.Date date = new Date(); 
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime())); 
+0

+1 के साथ java.sql.Timestamp का उपयोग करें: समस्या यह है कि 'java.sql.Date' * विशेष रूप से * केवल एक दिनांक है, और इसलिए समय घटक को छोड़ देता है। –

+0

यह त्रुटि दिखाता है जब मैंने सम्मिलित कथन निष्पादित करने का प्रयास किया, यानी जब मैं pstmt.executeupdate() का उपयोग करता हूं तो यह त्रुटि दिखाता है; – Narayan

+0

आपने जो त्रुटि प्राप्त की है उसे निर्दिष्ट नहीं किया है, मुझे लगता है कि यह पैरामीटर के रूप में लंबे समय से पूछ रहा है - संपादित उत्तर देखें। – Bitmap

1

हालांकि एक पुराने पोस्ट, इस सवाल का जवाब आसान है और आपकी आवश्यकता पर निर्भर करता है - अपने आवश्यकताओं के अनुसार DATETIME डेटा प्रकार का उपयोग करें और निम्न

java.util.Date date = new Date(); 
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime()).getTime()); 

का उपयोग चलो दोनों डेटाबेस से तर्क देख सकते हैं और जेडीबीसी पक्ष।

डेटाबेस में डेटा प्रकार से प्रारंभ करें और उचित चुनें। जो आपके मामले में बिल्कुल उपयुक्त है वह DATETIME है क्योंकि आप दिनांक और घंटा/मिनट/सेकंड चाहते हैं। DATETIME प्रकार का उपयोग दीवार घड़ी के समय को संग्रहीत करने के लिए किया जाता है जबकि TIMESTAMP समय पर एक निश्चित बिंदु (युग के बाद कुछ मिलीसेकंड) के लिए होता है। MySQL में दोनों आंतरिक रूप से संग्रहीत किए जाने में भी अंतर है।

अब जब आप जेडीबीसी पक्ष में आते हैं तो आपके पास तिथि (केवल दिनांक भाग), टाइमस्टैम्प (दिनांक और समय) और समय (केवल समय) के लिए एपीआई विधियां होती हैं। यही वह है जो जेडीबीसी को पेश करना है। तो अब, आपकी आवश्यकता के अनुरूप एपीआई सेट हैस्टीस्टैम्प

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