2011-04-04 7 views
7

मैं ओरेकल डेटाबेस में नया हूं। मुझे ओरेकल में डेट-टाइम अवधारणाओं के बारे में ज्यादा जानकारी नहीं है। जिस समस्या का मैं सामना कर रहा हूं वह किसी विशेष दिनांक पर दर्ज किए गए रिकॉर्ड पुनर्प्राप्त करना है। लेकिन जब मैं डेटाबेस पर SQL क्वेरी निष्पादित कर रहा हूं तो यह शून्य रिकॉर्ड देता है।ओरेकल में दिनांक फ़ील्ड से केवल दिनांक मूल्य निकालने के लिए कैसे?

डेटाबेस में दिनांक फ़ील्ड है जिसमें डेटाटाइम मान दोनों के साथ रिकॉर्ड हैं।

एसक्यूएल क्वेरी: SELECT * FROM table WHERE table.daterecord = to_date(03-Mar-2010)

यह किसी भी रिकॉर्ड नहीं लौटा रहा है लेकिन अगर मैं

SELECT * FROM table WHERE table.daterecord > to_date(04-Mar-2010) 

को अपनी क्वेरी को बदलने यह कुछ रिकॉर्ड वापस आ जाएगी। उपर्युक्त अंतर समय के कारण है। मैं समय से समय मूल्य कैसे निकाल सकता हूं। क्या मैं इसके लिए trunc फ़ंक्शन का उपयोग कर सकता हूं? आपके मूल्यवान सुझावों के लिए अग्रिम धन्यवाद।

उत्तर

4

आप उदाहरण के लिए TRUNC

उपयोग कर सकते हैं:

SELECT * 
    FROM table 
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
15

हाँ आप TRUNC फ़ंक्शन का उपयोग कर सकते हैं।

SELECT * 
    FROM table 
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
7

"How to correctly handle dates in queries constraints" के सुझाव के लिए अतः इस देखते हैं?

जवाब पहले से ही प्रदान की के अलावा, मैं एक रेंज का उपयोग कर के बाद से इस और अधिक आसानी से इंडेक्स करने योग्य है सुझाव है:

SELECT * 
    FROM table 
WHERE table.daterecord >= TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
    AND table.daterecord < TO_DATE('04-Mar-2010', 'DD-MON-RRRR') 
+0

+1, मैं (TRUNC बनाम) सूचकांक का उपयोग करने के – tbone

+0

+1 क्षमता के कारण यह पसंद अन्य प्रश्न में आपके उत्तर के लिए :) – Ronnis

+0

यह देखते हुए कि आप जानते हैं कि यह एक डुप्लिकेट प्रश्न है, आपको अपने जवाब को डुप्लिकेट करने के बजाय, प्रश्न को बंद करने के लिए वोट देना चाहिए था। ऐसा नहीं है कि आपको वास्तव में अंक की आवश्यकता है। – APC

संबंधित मुद्दे