दिलचस्प पोस्ट
क्या आईआईएफ फ़ंक्शन SSRS में दोनों रास्ते की गणना करता है या क्या यह कम-सर्किट है? लॉगिन के बाद पिछले पृष्ठ पर पुनर्निर्देशन किया जा रहा है? पीएचपी स्प्रिंग में जावा कॉन्फ़िग के साथ 404 त्रुटि रीडायरेक्ट क्यों pthread_cond_wait नकली जाली है? कैसे कुंजी से दो ऑब्जेक्ट मान मर्ज करने के लिए टेक्स्ट फ़ाइल की निर्दिष्ट स्थिति पर लाइन डालने जावा प्रोग्राम में अजीब फ्लोटिंग-पॉइंट व्यवहार आरएआई और स्मार्ट पॉइंटर्स सी ++ में बहुआयामी सरणी के साथ php foreach जावास्क्रिप्ट एक वस्तु में लगभग सब कुछ कैसे है? ईएफ 4.0 में स्ट्रिंग को ईंट में कनवर्ट करें सीएसएस पाठ-रूपांतरण सभी कैपिटलों पर कैपिटल बनाना स्विफ्ट में त्रुटि प्रकार के साथ स्थानीयकृत विवरण कैसे प्रदान करें? स्ट्रिंग से नंबर कैसे ढूंढें? मैं सी # का उपयोग कर दो दिनांक समय वस्तुओं के बीच का समय अंतर कैसे प्राप्त करूं?

Java.util.Date को java.sql.Date में कनवर्ट करने के लिए कैसे?

मैं java.util.Date को इनपुट के रूप में उपयोग करने की कोशिश कर रहा हूं और फिर इसके साथ एक क्वेरी बना रहा हूं – इसलिए मुझे java.sql.Date . java.sql.Date आवश्यकता है

मुझे यह पता चलने में हैरान था कि यह रूपांतरण को निहित या स्पष्ट रूप से नहीं कर सकता – लेकिन मुझे यह भी पता नहीं है कि मैं ऐसा कैसे करूंगा, क्योंकि जावा एपीआई अभी भी मेरे लिए काफी नया है

वेब के समाधान से एकत्रित समाधान "Java.util.Date को java.sql.Date में कनवर्ट करने के लिए कैसे?"

यदि आप केवल-तिथि के साथ काम करने की कोशिश कर रहे हैं (कोई समय-समय नहीं, कोई समय क्षेत्र नहीं), तो java.util.Date बजाय LocalDate वर्ग का उपयोग करें

java.time

जावा 8 और बाद में, जावा के शुरुआती संस्करणों के साथ बंडल परेशानी पुरानी तारीख समय कक्षाओं को नए java.time पैकेज द्वारा मुहैया कराया गया है। ओरेकल ट्यूटोरियल देखें अधिकतर कार्यक्षमता को तीन-टेन-बैकपोर्ट में जावा 6 और 7 में बैक-पोर्ट किया गया है और इसे एंड्रॉइड के लिए तीन टाएंबैप में अनुकूलित किया गया है।

एक एसक्यूएल डेटा प्रकार DATE का मतलब केवल-तिथि के लिए होता है, जिसमें समय-सीमा और समय क्षेत्र नहीं होता है। जावा में कभी भी ऐसा कोई वर्ग नहीं था जब जावा में जावा। java.time.LocalDate तक का java.time.LocalDate था। चलो एक विशेष समय क्षेत्र के अनुसार आज की तारीख को प्राप्त करते हुए इस तरह के मूल्य को बनाते हैं (एक नया दिन के रूप में समय का निर्धारण करने में समय क्षेत्र महत्वपूर्ण है, पहले पेरिस में मॉन्ट्रियल की तुलना में, उदाहरण के लिए)

 LocalDate todayLocalDate = LocalDate.now( ZoneId.of( "America/Montreal" ) ); // Use proper "continent/region" time zone names; never use 3-4 letter codes like "EST" or "IST". 

इस बिंदु पर, हम किया जा सकता है यदि आपका JDBC ड्रायवर JDBC 4.2 स्पेस का अनुपालन करता है, तो आप एसक्यूएल DATE फ़ील्ड में स्टोर करने के लिए PreparedStatement गए setObject पर LocalDate माध्यम से एक LocalDate पास करने में सक्षम होना चाहिए।

 myPreparedStatement.setObject( 1 , localDate ); 

इसी तरह, एक एसक्यूएल तिथि कॉलम से जावा LocalDate ऑब्जेक्ट पर लाने के लिए ResultSet::getObject का उपयोग करें। दूसरे तर्क में वर्ग निर्दिष्ट करने से आपके कोड प्रकार सुरक्षित होते हैं

 LocalDate localDate = ResultSet.getObject( 1 , LocalDate.class ); 

दूसरे शब्दों में, यह संपूर्ण प्रश्न जेडीबीसी 4.2 या बाद के संस्करण के तहत अप्रासंगिक है

यदि आपका JDBC ड्रायवर इस तरीके से निष्पादित नहीं करता है, तो आपको java.sql प्रकारों में कनवर्ट करने की आवश्यकता है।

Java.sql.Date पर कन्वर्ट करें

कनवर्ट करने के लिए, पुरानी दिनांक-समय कक्षाओं में जोड़े गए नए विधियों का उपयोग करें। हम एक LocalDate को बदलने के लिए java.sql.Date.valueOf(…) पर कॉल कर सकते हैं।

 java.sql.Date sqlDate = java.sql.Date.valueOf( todayLocalDate ); 

और दूसरी दिशा में जा रहे हैं

 LocalDate localDate = sqlDate.toLocalDate(); 

Java.util.Date से परिवर्तित

जब आपको पुरानी तिथि-समय कक्षाओं का उपयोग करने से बचना चाहिए, तो आपको मौजूदा कोड के साथ काम करने के लिए मजबूर किया जा सकता है। यदि हां, तो आप java.time से / से कन्वर्ट कर सकते हैं।

Instant क्लास के माध्यम से जाएं, जो यूटीसी में टाइमलाइन पर एक पल का प्रतिनिधित्व करता है। एक Instant एक java.util.Date लिए समान है। लेकिन ध्यान दें कि Instant नैनोसेकेंड तक संकल्प है, जबकि java.util.Date पास केवल मिलीसेकंड रिज़ोल्यूशन है

कनवर्ट करने के लिए, पुराने विधियों में जोड़े गए नए विधियों का उपयोग करें। उदाहरण के लिए, java.util.Date.from( Instant ) और java.util.Date::toInstant

 Instant instant = myUtilDate.toInstant(); 

किसी तिथि को निर्धारित करने के लिए, हमें समय क्षेत्र के संदर्भ की आवश्यकता है। किसी भी क्षण के लिए, समय समय क्षेत्र के अनुसार विश्व भर में भिन्न होता है। ZoneId प्राप्त करने के लिए एक ZonedDateTime ZoneId लागू करें

 ZoneId zoneId = ZoneId.of ( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId ); LocalDate localDate = zdt.toLocalDate(); 

† जावा.sql.Date वर्ग समय-प्रतिदिन के बिना केवल-तिथि का दिखावा करता है, लेकिन वास्तव में एक समय-प्रतिदिन, एक आधी रात के समय में समायोजित होता है। भ्रामक? हाँ, पुरानी तारीख समय कक्षाएं एक गड़बड़ हैं

कोई बात नहीं….

 public class MainClass { public static void main(String[] args) { java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println("utilDate:" + utilDate); System.out.println("sqlDate:" + sqlDate); } } 

यह बताता है लिंक http://www.java2s.com/Tutorial/Java/0040__Data-Type/ConvertfromajavautilDateObjecttoajavasqlDateObject.htm है

अन्य उत्तर के साथ आपको समय की जानकारी के साथ परेशानी हो सकती है (अप्रत्याशित परिणाम के साथ तारीख की तुलना करें!)

मैं सुझाव देता हूँ:

 java.util.Calendar cal = Calendar.getInstance(); java.util.Date utilDate = new java.util.Date(); // your util date cal.setTime(utilDate); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); java.sql.Date sqlDate = new java.sql.Date(cal.getTime().getTime()); // your sql date System.out.println("utilDate:" + utilDate); System.out.println("sqlDate:" + sqlDate); 

यह फ़ंक्शन किसी दिनांकित दिनांक को जावा दिनांक ऑब्जेक्ट से वापस करेगा।

 public java.sql.Date convertJavaDateToSqlDate(java.util.Date date) { return new java.sql.Date(date.getTime()); } 

java.util.Data को java.sql.Data परिवर्तित करना। java.sql.Data का समय, मिनट और दूसरा खो जाएगा तो अगर यह संभव है, तो मैं सुझाव देता हूं कि आप इस तरह java.sql.Timestamp उपयोग करें:

 prepareStatement.setTimestamp(1, new Timestamp(utilDate.getTime())); 

अधिक जानकारी के लिए, आप इस सवाल को देख सकते हैं

मेरे मामले में जेएक्सडेट पीकर (जावा कैलेंडर) की तारीख को चुनना और इसे एसक्यूएल तिथि प्रकार के रूप में डेटाबेस में संग्रहीत करना, नीचे काम ठीक है ..

java.sql.Date date = new java.sql.Date(pickedDate.getDate().getTime());

जहां चुना तिथि JXDatePicker का उद्देश्य है

यह फ़ंक्शन किसी दिनांकित दिनांक को जावा दिनांक ऑब्जेक्ट से वापस करेगा।

 public static java.sql.Date convertFromJAVADateToSQLDate( java.util.Date javaDate) { java.sql.Date sqlDate = null; if (javaDate != null) { sqlDate = new Date(javaDate.getTime()); } return sqlDate; } 

यहां यूटील दिनांक को एसक्यूएल की तारीख में परिवर्तित करने का उदाहरण दिया गया है और ये एक उदाहरण है जो मैं अपनी परियोजना में उपयोग कर रहा हूं आपके लिए भी सहायक हो सकता है।

 java.util.Date utilStartDate = table_Login.getDob();(orwhat ever date your give form obj) java.sql.Date sqlStartDate = new java.sql.Date(utilStartDate.getTime());(converting date) 

अपने java.util.Date को फ़ॉर्मेट करें फिर जावा.sql.Date में दिनांक प्राप्त करने के लिए स्वरूपित तिथि का उपयोग करें

 java.util.Date utilDate = "Your date" SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); final String stringDate= dateFormat.format(utilDate); final java.sql.Date sqlDate= java.sql.Date.valueOf(stringDate); 

2 तारीखों की तुलना करने के लिए विधि (उपयोगडेटेट या एसक्यूएलडेट)

  public static boolean isSameDay(Date a, Date b) { Calendar calA = new GregorianCalendar(); calA.setTime(a); Calendar calB = new GregorianCalendar(); calB.setTime(b); final int yearA = calA.get(Calendar.YEAR); final int monthA = calA.get(Calendar.MONTH); final int dayA = calA.get(Calendar.DAY_OF_YEAR); final int yearB = calB.get(Calendar.YEAR); final int monthB = calB.get(Calendar.MONTH); final int dayB = calB.get(Calendar.DAY_OF_YEAR); return yearA == yearB && monthA == monthB && dayA == dayB; } 

मैं एक नौसिखिया हूं: इसके आसपास काम करने के बाद काम किया सोचा उपयोगी हो सकता है

  String bufDt = bDOB.getText(); //data from form DateFormat dF = new SimpleDateFormat("dd-MM-yyyy"); //data in form is in this format Date bbdt = (Date)dF.parse(bufDt); // string data is converted into java util date DateFormat dsF = new SimpleDateFormat("yyyy-MM-dd"); //converted date is reformatted for conversion to sql.date String ndt = dsF.format(bbdt); // java util date is converted to compatible java sql date java.sql.Date sqlDate= java.sql.Date.valueOf(ndt); // finally data from the form is convered to java sql. date for placing in database 

इस के साथ प्रयास करें

 public static String toMysqlDateStr(Date date) { String dateForMySql = ""; if (date == null) { dateForMySql = null; } else { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateForMySql = sdf.format(date); } return dateForMySql; } 

मुझे लगता है कि बदलने का सबसे अच्छा तरीका है:

 static java.sql.Timestamp SQLDateTime(Long utilDate) { return new java.sql.Timestamp(utilDate); } Date date = new Date(); java.sql.Timestamp dt = SQLDateTime(date.getTime()); 

यदि आप एक एसक्यूएल तालिका में dt चर को सम्मिलित करना चाहते हैं तो आप ऐसा कर सकते हैं:

 insert into table (expireAt) values ('"+dt+"'); 

आप उपयोग तिथि को एसक्यूएल तारीख में कनवर्ट करने के लिए इस पद्धति का उपयोग कर सकते हैं,

 DateUtilities.convertUtilDateToSql(java.util.Date) 

मैं निम्नलिखित कोड का उपयोग कर रहा हूं कृपया इसे आज़माएं

 DateFormat fm= new SimpleDateFormatter(); 

उदाहरण के प्रारूप को "DD-MM_YYYY" या 'YYYY-mm-dd' रूप में निर्दिष्ट करें, तब जावा दिनांक डेटाटाइप का उपयोग करें

 fm.format("object of java.util.date"); 

तो यह आपकी तारीख को पार्स करेगा

मैं निम्नलिखित कोडिंग की कोशिश कर रहा था जो ठीक काम किया।

java.util.Date उपयोगिता = नया java.util.Date ();
java.sql.Date sqlDate = नए java.sql.Date (उपयोग डेट);

यदि आप मेसिअन हैं तो एक तिथि कॉलम को इस तारीख का एक स्ट्रिंग प्रस्तुतीकरण दिया जा सकता है

इसलिए मैं DateFormatter वर्ग को इसे प्रारूपित करने के लिए उपयोग कर रहा हूं और फिर इसे एक स्ट्रिंग के रूप में एसक्यूएल स्टेटमेंट या तैयार कथन में सेट करता हूं

यहां कोड चित्रण है:

 private String converUtilDateToSqlDate(java.util.Date utilDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String sqlDate = sdf.format(utilDate); return sqlDate; } 

स्ट्रिंग तिथि = कन्वरउशीरटैट टीओएसक्यूएलडीट (अन्य ट्रांज़ैक्शन.ट्राट्रांसडेट ());

// तो आप इस दिनांक को एसक्यूएल वक्तव्य में पास करें