2012-02-05 10 views
6

मेरे पास एक कॉलम है जो "DATE" प्रकार का है और मैं इसे sysdate के साथ तुलना करने पर एक क्वेरी चलाने के लिए चाहता हूं।ओरेकल में sysdate के साथ दिनांक की तुलना

लेकिन मुझे निम्न त्रुटि मिल रही है, क्या कोई मुझे बता सकता है कि मैं यहां क्या खो रहा हूं?

SQL> select distinct file_name as r 
    from table_1 
    where view_day >= TO_DATE(SYSDATE-10, 'YYYY/MM/DD'); 

ERROR at line 1: 
ORA-01858: a non-numeric character was found where a numeric was expected 
+0

तो इन उत्तरों में से एक समाधान कृपया हरे निशान के साथ यह आप में मदद की। –

उत्तर

0

त्रुटि से पता चलता है कि एक VIEW_DAY स्तंभ varchar ताकि आप स्ट्रिंग के लिए तिथि बदलने की आवश्यकता है। TO_CHAR का उपयोग करें या VIEW_DAY को दिनांक प्रकार में परिवर्तित करें।

+1

नहीं। view_date DATE का प्रकार – TopCoder

+2

@TopCoder है - मुझे लगता है! एक नज़र डालें - http://www.orafaq.com/wiki/ORA-01858 – adatapost

+0

धन्यवाद! तुम सही हो। मेरे सिस्टम में view_date और sysdate के लिए डिफ़ॉल्ट दिनांक प्रारूप दोनों डीडी-मॉन-वाई वाई वाई पर सेट किए गए थे। उसी प्रारूप को बदलने में मदद मिली! – TopCoder

14

आपको किसी तारीख को to_date का उपयोग नहीं करना चाहिए, To_date तारीख को एक वर्कर कास्टिंग करने के लिए है, तारीख नहीं।
यदि आप किसी दिनांक पर फ़ंक्शन__डेट करते हैं, तो ऑरैकल इसे nls_date_format के अनुसार स्ट्रिंग के रूप में संदर्भित करेगा जो विभिन्न वातावरण में भिन्न हो सकता है।
रूप @jonearles कहा, तुम sysdate में समय निकालना चाहते हैं तो TRUNC

+1

+1। –

6

उपयोग का उपयोग करें:

select distinct file_name as r 
from table_1 
where view_day >= TRUNC(SYSDATE-10)