AND ऑपरेटर के साथ BETWEEN तर्क का उपयोग करें
आज की तारीख (या कोई विशिष्ट तारीख) दो तारीख कॉलम के बीच आने वाली पंक्तियाँ खोजने के लिए, दोनों शर्तों को AND से जोड़ें।
सिंटैक्स
SELECT * FROM yourTableName WHERE yourStartDateColumn <= 'yourDateValue' AND yourEndDateColumn >= 'yourDateValue';
व्यावहारिक उदाहरण
टेबल बनाना
mysql> CREATE TABLE selectDates (
Id INT NOT NULL AUTO_INCREMENT,
StartingDate DATE,
EndingDate DATE,
PRIMARY KEY(Id)
);
डेटा डालना
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-01-11', '2019-01-23');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-01-10', '2019-01-23');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-01-30', '2019-01-30');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-10-14', '2019-10-28');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-10-14', '2019-10-20');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-11-17', '2019-11-19');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-12-21', '2019-12-31');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-01-06', '2019-01-21');
mysql> INSERT INTO selectDates(StartingDate, EndingDate) VALUES('2019-01-07', '2019-01-17');
सभी रिकॉर्ड
+----+--------------+------------+ | Id | StartingDate | EndingDate | +----+--------------+------------+ | 1 | 2019-01-11 | 2019-01-23 | | 2 | 2019-01-10 | 2019-01-23 | | 3 | 2019-01-30 | 2019-01-30 | | 4 | 2019-10-14 | 2019-10-28 | | 5 | 2019-10-14 | 2019-10-20 | | 6 | 2019-11-17 | 2019-11-19 | | 7 | 2019-12-21 | 2019-12-31 | | 8 | 2019-01-06 | 2019-01-21 | | 9 | 2019-01-07 | 2019-01-17 | +----+--------------+------------+
क्वेरी: '2019-01-10' के बीच वाली पंक्तियाँ
mysql> SELECT * FROM selectDates WHERE StartingDate <= '2019-01-10' AND EndingDate >= '2019-01-10';
आउटपुट
+----+--------------+------------+ | Id | StartingDate | EndingDate | +----+--------------+------------+ | 2 | 2019-01-10 | 2019-01-23 | | 8 | 2019-01-06 | 2019-01-21 | | 9 | 2019-01-07 | 2019-01-17 | +----+--------------+------------+
डायनामिक "आज" के लिए
SELECT * FROM selectDates WHERE StartingDate <= CURDATE() AND EndingDate >= CURDATE();
BETWEEN ऑपरेटर का उपयोग (समान)
SELECT * FROM selectDates WHERE '2019-01-10' BETWEEN StartingDate AND EndingDate;
मुख्य बिंदु
- शुरुआत की तारीख
<=लक्ष्य तारीख और अंत की तारीख>=लक्ष्य तारीख होनी चाहिए। BETWEENसमावेशी है (दोनों सिरे शामिल)।- डायनामिक "आज" के लिए
CURDATE()याNOW()(डेटाटाइम के लिए) उपयोग करें। StartingDateऔरEndingDateपर इंडेक्स प्रदर्शन में सुधार करते हैं।