tl;डॉ
नहीं, आप नहीं करते हैं।
- Oracle जैसे डेटाबेस अपने आंतरिक रूप से परिभाषित बाइनरी मानों के साथ दिनांक-समय मानों को संग्रहीत करते हैं, न कि सादे पाठ के रूप में।
- ओरेकल
DATE
type दिन-प्रतिदिन के साथ-साथ एक तिथि भी रखता है।
DATE
=तारीख + दिन का समय
DATE
Oracle डेटाबेस में टाइप का नाम गलत है। यह एक तिथि (वर्ष, महीने और महीने के दिन) से अधिक रखता है।
यह प्रकार पूरे सेकंड के लिए दिन-प्रतिदिन हल करने वाली तारीख का प्रतिनिधित्व करता है। इस प्रकार में समय क्षेत्र या ऑफ़सेट-से-UTC के संदर्भ का अभाव है। तो इस प्रकार का उपयोग एक पल, समयरेखा पर एक विशिष्ट बिंदु का प्रतिनिधित्व करने के लिए नहीं किया जा सकता है। (एक पल को ट्रैक करने के लिए, Oracle प्रकार का उपयोग करें TIMESTAMP WITH TIME ZONE
।)
ध्यान दें कि यह Oracle नामकरण SQL मानक से भिन्न है। मानक में, एक DATE
प्रकार केवल दिनांक-मान है, जिसमें कोई समय-समय नहीं है और कोई समय क्षेत्र या ऑफ़सेट नहीं है।
java.time.LocalDateTime
तो इस प्रकार का नक्शा LocalDateTime
जावा में।
पुनर्प्राप्ति।
LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class ) ;
भंडारण।
myPreparedStatement.setObject( … , ldt ) ;
पाठ
ध्यान दें कि ऊपर दिए गए कोड में हम डंब स्ट्रिंग्स के बजाय स्मार्ट ऑब्जेक्ट्स का उपयोग कर रहे हैं।
दिनांक-समय ऑब्जेक्ट जैसे LocalDateTime
String
नहीं हैं और पाठ न रखें। वे आंतरिक रूप से अपने तरीके से अपने मूल्य का प्रतिनिधित्व करते हैं। आप एक स्ट्रिंग को डेट-टाइम ऑब्जेक्ट के रूप में पार्स कर सकते हैं, और आप टेक्स्ट जेनरेट करने के लिए डेट-टाइम ऑब्जेक्ट से पूछ सकते हैं। लेकिन टेक्स्ट और डेट-टाइम ऑब्जेक्ट अलग और अलग हैं।
java.time कक्षाएं मानक का उपयोग करती हैं ISO 8601 स्ट्रिंग्स को पार्स/जनरेट करते समय प्रारूप।
String output = ldt.toString() ;
पार्सिंग।
आप अन्य स्वरूपों में पाठ उत्पन्न कर सकते हैं। आप DateTimeFormatter.ofPattern
. पर कॉल करके अपना स्वयं का कस्टम प्रारूप निर्दिष्ट कर सकते हैं . आमतौर पर DateTimeFormatter.ofLocalized…
. को कॉल करके स्वचालित रूप से प्रारूपित करना बेहतर होता है तरीके।
यह स्टैक ओवरफ्लो पर पहले से ही कई बार कवर किया गया है। तो और जानने के लिए खोजें।
LocalDateTime ldt = LocalDateTime.parse( "2020-01-23T01:23:45.123456789" ) ;
के बारे में java.time
java.time
फ्रेमवर्क जावा 8 और बाद में बनाया गया है। ये कक्षाएं पुराने विरासत
की जगह लेती हैं दिनांक-समय की कक्षाएं जैसे java.util.Date
, Calendar
, और SimpleDateFormat
।
अधिक जानने के लिए, Oracle Tutorial देखें . और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता है JSR 310 ।
जोडा-टाइम प्रोजेक्ट, अब रखरखाव मोड में , java.time कक्षाएं।
आप java.time . का आदान-प्रदान कर सकते हैं अपने डेटाबेस के साथ सीधे वस्तुओं। JDBC ड्राइवर
का उपयोग करें JDBC 4.2
के अनुरूप या बाद में। स्ट्रिंग्स की कोई आवश्यकता नहीं है, java.sql.*
. की कोई आवश्यकता नहीं है कक्षाएं। हाइबरनेट 5 और जेपीए 2.2 समर्थन java.time .
java.time कक्षाएं कहाँ से प्राप्त करें?
- जावा एसई 8
, Java SE 9
, Java SE 10
, Java SE 11
, और बाद में - बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
- Java 9 में कुछ छोटी सुविधाएँ और सुधार शामिल हैं।
- जावा एसई 6
और Java SE 7
- अधिकांश java.time कार्यक्षमता को ThreeTen-Backport में Java 6 और 7 में बैक-पोर्ट किया गया है ।
- एंड्रॉयड
- Android बंडल के बाद के संस्करण java.time के कार्यान्वयन कक्षाएं।
- पहले के Android (<26) के लिए, ThreeTenABP परियोजना अनुकूलन ThreeTen-Backport (उपर्युक्त)। देखें ThreeTenABP का उपयोग कैसे करें… ।