BETWEEN ऑपरेटर और NOW() फंक्शन
वर्तमान डेट और समय के जॉइनिंग और रिलीविंग डेट के बीच होने वाले रिकॉर्ड्स खोजने के लिए BETWEEN ऑपरेटर के साथ NOW() फंक्शन का उपयोग करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable771 (
JoiningDate DATETIME,
RelievingDate DATETIME
);
Query OK, 0 rows affected (1.15 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable771 VALUES('2016-01-21','2016-09-23');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO DemoTable771 VALUES('2019-01-21','2019-09-23');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable771 VALUES('2017-04-01','2018-12-31');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable771 VALUES('2019-04-01','2019-12-31');
Query OK, 1 row affected (0.25 sec)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable771;
+---------------------+---------------------+ | JoiningDate | RelievingDate | +---------------------+---------------------+ | 2016-01-21 00:00:00 | 2016-09-23 00:00:00 | | 2019-01-21 00:00:00 | 2019-09-23 00:00:00 | | 2017-04-01 00:00:00 | 2018-12-31 00:00:00 | | 2019-04-01 00:00:00 | 2019-12-31 00:00:00 | +---------------------+---------------------+ 4 rows in set (0.00 sec)
वर्तमान डेट के बीच वाले रिकॉर्ड्स खोजने की क्वेरी
mysql> SELECT * FROM DemoTable771
WHERE NOW() BETWEEN JoiningDate AND RelievingDate;
परिणाम (मान लीजिए वर्तमान डेट 2019 में है)
+---------------------+---------------------+ | JoiningDate | RelievingDate | +---------------------+---------------------+ | 2019-01-21 00:00:00 | 2019-09-23 00:00:00 | | 2019-04-01 00:00:00 | 2019-12-31 00:00:00 | +---------------------+---------------------+ 2 rows in set (0.07 sec)
क्वेरी व्याख्या
NOW()- वर्तमान डेट और समय लौटाता हैBETWEEN- समावेशी रेंज जांच (शुरुआत और अंत दोनों शामिल)- क्वेरी उन कर्मचारियों को ढूंढती है जो वर्तमान में सक्रिय हैं (जॉइन कर चुके हैं लेकिन रिलीव नहीं हुए)
अल्टरनेटिव सिंटैक्स
-- स्पष्ट तुलना के साथ SELECT * FROM DemoTable771 WHERE JoiningDate <= NOW() AND RelievingDate >= NOW(); -- केवल डेट भाग की तुलना (समय अनदेखा करने के लिए) SELECT * FROM DemoTable771 WHERE DATE(JoiningDate) <= CURDATE() AND DATE(RelievingDate) >= CURDATE();
उपयोग के मामले
- वर्तमान में सक्रिय कर्मचारी/सदस्य खोजना
- वैध सब्सक्रिप्शन/लाइसेंस जांचना
- चल रहे इवेंट्स/प्रमोशन्स ढूंढना
- किराया/लीज अवधि सत्यापित करना
प्रदर्शन टिप
बड़े टेबल्स पर, JoiningDate और RelievingDate पर कंपोजिट इंडेक्स बनाएं:
CREATE INDEX idx_dates ON DemoTable771(JoiningDate, RelievingDate);