MySQL BETWEEN के साथ दिनांक सीमा खोज
MySQL में BETWEEN ऑपरेटर का उपयोग करके आप दो दिनांकों के बीच (समावेशी) आने वाले रिकॉर्ड्स ढूंढ सकते हैं। यह ऑफ़र वैधता, बुकिंग प्रणाली और समय-आधारित फ़िल्टरिंग के लिए उपयोगी है।
उदाहरण: सक्रिय ऑफ़र ढूंढना
mysql> CREATE TABLE DemoTable1456 (
-> CustomerName VARCHAR(30),
-> StartOfferDate DATE,
-> EndOfferDate DATE
-> );
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable1456 VALUES
-> ('Chris', '2019-09-01', '2019-09-30'),
-> ('David', '2019-09-01', '2019-10-30'),
-> ('Bob', '2018-10-01', '2018-10-20');
Query OK, 3 rows affected (0.18 sec)
mysql> SELECT * FROM DemoTable1456;
+--------------+----------------+--------------+
| CustomerName | StartOfferDate | EndOfferDate |
+--------------+----------------+--------------+
| Chris | 2019-09-01 | 2019-09-30 |
| David | 2019-09-01 | 2019-10-30 |
| Bob | 2018-10-01 | 2018-10-20 |
+--------------+----------------+--------------+
3 rows in set (0.00 sec)
वर्तमान दिनांक के साथ BETWEEN क्वेरी
mysql> SELECT * FROM DemoTable1456
-> WHERE DATE(NOW()) BETWEEN StartOfferDate AND EndOfferDate;
परिणाम (मान लें वर्तमान दिनांक 2019-10-05 है)
+--------------+----------------+--------------+ | CustomerName | StartOfferDate | EndOfferDate | +--------------+----------------+--------------+ | David | 2019-09-01 | 2019-10-30 | +--------------+----------------+--------------+ 1 row in set (0.04 sec)
व्याख्या
- Chris: ऑफ़र 2019-09-30 को समाप्त हुआ (वर्तमान दिनांक 2019-10-05 से पहले) → बाहर
- David: ऑफ़र 2019-09-01 से 2019-10-30 तक → सक्रिय
- Bob: ऑफ़र 2018 में था → बाहर
BETWEEN महत्वपूर्ण नोट्स
- समावेशी: दोनों सीमाएं शामिल हैं (शुरुआत ≤ मान ≤ अंत)
- डेटा प्रकार: दिनांक, संख्या, स्ट्रिंग के साथ काम करता है
- NULL: यदि कोई मान NULL है तो NULL लौटाता है
- प्रदर्शन: दिनांक कॉलम पर इंडेक्स BETWEEN क्वेरी को गति देता है
वैकल्पिक सिंटैक्स
-- स्पष्ट तुलना (समान परिणाम) SELECT * FROM DemoTable1456 WHERE DATE(NOW()) >= StartOfferDate AND DATE(NOW()) <= EndOfferDate; -- केवल दिनांक भाग के लिए (यदि DATETIME कॉलम है) SELECT * FROM DemoTable1456 WHERE CAST(NOW() AS DATE) BETWEEN StartOfferDate AND EndOfferDate;
सामान्य नुकसान
WHERE StartOfferDate <= '2019-10-30 23:59:59' AND EndOfferDate >= '2019-10-01 00:00:00'