2013-08-08 11 views
9

मेरे पास एक टेबल के साथ एक पोस्टग्रेज़ डेटाबेस है जिसमें टाइमस्टैम्प (timeOfProcessing TIMESTAMP) शामिल है।जावा पर आधारित पोस्टग्रेज़ में टाइमस्टैम्प सहेजना

मेरे पास जावा डेटाटाइम मान (java.util.Date dateTime) है और वह उस टाइमस्टैम्प फ़ील्ड (समय क्षेत्र के बिना) में अपना मान संग्रहीत करना चाहता है।

जब मैं क्वेरी

"INSERT INTO mytable(..., timeOfCreation, ...) VALUES(..., to_timestamp(" + Long.toString(dateTime.getTime()) + "),...)"

और उसके बाद का उपयोग कर बचाया मूल्य (SELECT timeOfCreation FROM mytable) पढ़ा यह करते हैं, वे अलग हैं (resultSet.getTimestamp(...).getTime()dateTime.getTime() के बराबर नहीं है)।

डेटाटाइम को सही ढंग से संग्रहीत करने के लिए मुझे सम्मिलित कथन को बदलने की आवश्यकता कैसे है?

उत्तर

20

जब डालने, बजाय (dateTime).getTime() का उपयोग कर के, एक SQL टाइमस्टैम्प वस्तु का उपयोग करें: new java.sql.Timestamp((dateTime).getTime())

+1

कैसे होगा ORM के साथ कि काम करता है? – Sarief

+0

@ सर्फ काफी आसानी से एक ओआरएम का उपयोग नहीं करते हैं। एसक्यूएल गले लगाओ और ओआरएम monstrosities से दूर चलाओ। –

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