डेट कॉलम से माह और वर्ष निकालकर फ़िल्टर करने के लिए MySQL के MONTH() और YEAR() फ़ंक्शन का उपयोग करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1846 (
PurchaseDate DATE
);
डेटा डालें
mysql> INSERT INTO DemoTable1846 VALUES('2019-01-10');
mysql> INSERT INTO DemoTable1846 VALUES('2019-12-24');
mysql> INSERT INTO DemoTable1846 VALUES('2018-09-21');
mysql> INSERT INTO DemoTable1846 VALUES('2017-10-26');
दिसंबर 2019 के रिकॉर्ड प्राप्त करें
mysql> SELECT * FROM DemoTable1846
WHERE MONTH(PurchaseDate) = 12
AND YEAR(PurchaseDate) = 2019;
आउटपुट:
+--------------+ | PurchaseDate | +--------------+ | 2019-12-24 | +--------------+
बेहतर प्रदर्शन के लिए वैकल्पिक विधि
फ़ंक्शन कॉल इंडेक्स उपयोग को रोकते हैं। रेंज क्वेरी तेज़ होती है:
mysql> SELECT * FROM DemoTable1846
WHERE PurchaseDate >= '2019-12-01'
AND PurchaseDate < '2020-01-01';
अन्य उपयोगी फ़ंक्शन
DAY()- दिन निकालेंQUARTER()- तिमाही (1-4)WEEK()- सप्ताह संख्याDATE_FORMAT(date, '%Y-%m')- '2019-12' प्रारूप में प्राप्त करें
सारांश
- सरल फ़िल्टर के लिए
MONTH()/YEAR()ठीक है। - बड़ी टेबल/इंडेक्स उपयोग के लिए डेट रेंज (
BETWEENया>= <) बेहतर। - हमेशा कॉलम पर इंडेक्स रखें जिसे फ़िल्टर करते हैं।