नीचे दी गई क्वेरी हाल की तारीखों के साथ ठीक काम करती है (उदाहरण के लिए यदि तारीख 20-जून-16, 30-सितंबर-19 है)। लेकिन अगर मैं 29-MAR-80, 01-JAN-94 पर सेट दिनांक मान के साथ क्वेरी करता हूं तो यह कोई परिणाम नहीं देता है। आश्चर्य है कि क्या कारण हो सकता है। मुझे मौजूदा वर्ष के प्रारूप को YYYY में बदलने की अनुमति नहीं है। हम Oracle 19c पर हैं।
select * from V_IV_MUC where TRUNC(VALUE_TIMESTAMP) = '01-FEB-80';
1 उत्तर
यहां, आपकी तिथि '01-FEB-80'
को '01-FEB-1980'
में बदल दिया जाएगा, यदि आपका दो अंकों का वर्ष प्रारूप RR
(NLS_DATE_FORMAT
में) है और इसे '01-FEB-2080'
में बदल दिया जाएगा। यदि आपका दिनांक प्रारूप YY
(NLS_DATE_FORMAT
में) पर सेट है।
YY
-- वर्ष को वर्तमान शताब्दी वर्ष में बदलें -80 --> 2080
RR
-- चालू वर्ष (1950-2049) के आधार पर वर्ष को वर्ष में परिवर्तित करें ताकि80 --> 1980
।
डेटाबेस सेटिंग्स पर ऐसी किसी भी निर्भरता से बचने के लिए आप निम्न दो प्रश्नों में से किसी का भी उपयोग कर सकते हैं।
-- use date literal
select * from V_IV_MUC where TRUNC(VALUE_TIMESTAMP) = date '1980-02-01';
-- use date string with format
select * from V_IV_MUC where TRUNC(VALUE_TIMESTAMP) = to_date('01-FEB-80','dd-mon-rr');
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।