नीचे दी गई क्वेरी हाल की तारीखों के साथ ठीक काम करती है (उदाहरण के लिए यदि तारीख 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';
0
s3-89 18 जिंदा 2021, 10:30

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');
1
Popeye 18 जिंदा 2021, 10:36