MySQL में तारीखों की तुलना करें


94

मैं एक डेटाबेस से एक तारीख की तुलना करना चाहता हूं जो 2 दी गई तारीखों के बीच है। डेटाबेस से कॉलम DATETIME है, और मैं इसे केवल दिनांक प्रारूप से तुलना करना चाहता हूं, न कि डेटाटाइम प्रारूप।

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'

जब मैं ऊपर SQL निष्पादित करता हूं तो मुझे यह त्रुटि मिलती है:

आपके SQL सिंटैक्स में कोई त्रुटि है; 'us_reg_date, 120)> =' 2000-07-05 'और CONVERT (CHAR (10), us_reg_date, 120 <=' 2011- 'पर पास में उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करें पंक्ति 1

इस समस्या को कैसे ठीक किया जा सकता है?

जवाबों:


95

आप नीचे क्वेरी की कोशिश कर सकते हैं,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)

38
Google से आने वाले लोगों के लिए: mysql में दिनांक प्रकार yyyy-mm-dd प्रारूप में आता है।
बोलाएज माइकेल

88

यही कारण है एसक्यूएल सर्वर वाक्य रचना एक स्ट्रिंग के लिए एक तिथि परिवर्तित करने के लिए। MySQL में आप डेटटाइम से डेट निकालने के लिए DATE फ़ंक्शन का उपयोग कर सकते हैं :

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

लेकिन अगर आप स्तंभ पर एक इंडेक्स का लाभ उठाना चाहते हैं, तो आप us_reg_dateइसके बजाय इसे आज़माना चाहते हैं:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day

1
मैं सूचकांक के लाभ उठाने के आपके विचार की सराहना करता हूं। मुझे लगता है कि क्वेरी में "+ अंतराल 1 दिन" खंड नहीं होना चाहिए।
जुर्गेनफैड

10

यह मेरे लिए काम करता है:

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

प्रारूप स्ट्रिंग '% Y-% m-% d' और इनपुट तिथि के प्रारूप पर ध्यान दें।


6

हे दोस्तों मैं आपकी मदद के लिए धन्यवाद, मुझे जवाब मिल गया।

यहाँ कोड है ......।

SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

2

यह वही है जो मेरे लिए काम करता है:

select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
 AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

कृपया ध्यान दें कि मुझे पिछले समाधानों से STR_TO_DATE (कॉलम, '% d /% m /% Y') बदलना था, क्योंकि इसे लोड करने में उम्र लग रही थी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.