2011-01-26 14 views
12

मैं एक तालिका से विभिन्न चीजों का चयन कर रहा हूं। समस्या यह है कि मैं केवल उन्हें चुनना चाहता हूं यदि वे चालू वर्ष और अगले वर्ष के हैं।वर्तमान वर्ष प्राप्त करें और अगला फॉर्म mysql

मेरे तालिका इस

शीर्षक पाठ दिनांक

तारीख इस 0000-00-00 तरह से स्वरूपित और प्रारूप "तिथि"

तो सवाल यह है की तरह लग रहा है मैं केवल इस साल और अगले से केवल वस्तुओं का चयन कैसे कर सकता हूं?

उदाहरण: वर्ष 2012 है, मेरे पास मेरी तालिका में आइटम हैं जो पुराने हैं और मैं उन्हें नहीं दिखाना चाहता हूं - मैं केवल पहले 2012 में जनवरी से आइटम चुनना चाहता हूं और इस मामले में 31 दिसंबर 2013 वर्तमान वर्ष 2012 + 1 वर्ष।

किसी भी मदद के लिए बहुत बहुत धन्यवाद!

उत्तर

51
SELECT 
    * 
FROM 
    table 
WHERE 
    YEAR(date) = YEAR(CURDATE()) 
OR 
    YEAR(date) = YEAR(CURDATE()) + 1 

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

+3

नोट तथापि, कि इस 'पर date' क्षेत्र सूचकांक का उपयोग नहीं होगा। – Mchl

+1

यह एक आकर्षण की तरह काम कर रहा है! आपका बहुत बहुत धन्यवाद! – Tobias

+0

डेटा पर फ़ंक्शन का उपयोग न करें (प्रदर्शन के लिए खराब) –

4
SELECT 
    * 
FROM 
    table 
WHERE 
    date BETWEEN CONCAT(YEAR(CURDATE()),'-01-01') AND CONCAT(YEAR(CURDATE())+1,'-12-31') 

के रूप में यह लग रहा है के रूप में बदसूरत, यह आपकी क्वेरी date मैदान पर सूचकांक का उपयोग करने की अनुमति देता है।

बाहरी PHP स्क्रिप्ट में सीमित तिथियां बनाना बेहतर विचार है, ताकि क्वेरी क्वेरी कैश का उपयोग कर सके।


आप केवल आइटम, कि कोई भी दो साल से अधिक पुराने हैं दिखाना चाहते हैं, तो आप ऐसा कर सकते हैं:

SELECT 
    * 
FROM 
    table 
WHERE 
    date >= CURDATE() - INTERVAL 2 YEAR; 
संबंधित मुद्दे