MySQL में दिनांक सीमा सदस्यता जांच
यह जांचने के लिए कि क्या वर्तमान दिनांक (या कोई विशिष्ट दिनांक) शुरुआत और समाप्ति दिनांक सीमा के भीतर आता है, तुलना ऑपरेटरों का उपयोग करें: वर्तमान_दिनांक >= शुरुआत_दिनांक AND वर्तमान_दिनांक <= समाप्ति_दिनांक।
उदाहरण: सक्रिय दिनांक सीमाएं ढूंढना
mysql> CREATE TABLE DemoTable1448 (
-> StartDate DATE,
-> EndDate DATE
-> );
Query OK, 0 rows affected (0.46 sec)
mysql> INSERT INTO DemoTable1448 VALUES
-> ('2019-01-21', '2019-03-22'),
-> ('2019-04-05', '2019-10-10'),
-> ('2019-10-01', '2019-10-29'),
-> ('2018-12-31', '2019-12-31');
Query OK, 4 rows affected (0.16 sec)
mysql> SELECT * FROM DemoTable1448;
+------------+------------+
| StartDate | EndDate |
+------------+------------+
| 2019-01-21 | 2019-03-22 |
| 2019-04-05 | 2019-10-10 |
| 2019-10-01 | 2019-10-29 |
| 2018-12-31 | 2019-12-31 |
+------------+------------+
4 rows in set (0.00 sec)
मान लें वर्तमान दिनांक 2019-10-05 है।
सीमा जांच क्वेरी
mysql> SELECT (CURDATE() >= StartDate AND CURDATE() <= EndDate) AS DateInRange
-> FROM DemoTable1448;
परिणाम
+-------------+ | DateInRange | +-------------+ | 0 | | 1 | | 1 | | 1 | +-------------+ 4 rows in set (0.04 sec)
व्याख्या
| StartDate | EndDate | 2019-10-05 सीमा में? | परिणाम |
|---|---|---|---|
| 2019-01-21 | 2019-03-22 | नहीं (समाप्त) | 0 (असत्य) |
| 2019-04-05 | 2019-10-10 | हां | 1 (सत्य) |
| 2019-10-01 | 2019-10-29 | हां | 1 (सत्य) |
| 2018-12-31 | 2019-12-31 | हां | 1 (सत्य) |
बूलियन परिणाम उपयोग
MySQL में बूलियन परिणाम 1 (सत्य) या 0 (असत्य) होते हैं। आप इन्हें उपयोग कर सकते हैं:
- WHERE क्लॉज में:
WHERE (CURDATE() >= StartDate AND CURDATE() <= EndDate) - गणना में:
SUM(CURDATE() BETWEEN StartDate AND EndDate)सक्रिय सीमाओं की गिनती करता है - CASE में: लेबल के लिए
CASE WHEN ... THEN 'Active' ELSE 'Expired' END
BETWEEN विकल्प
SELECT CURDATE() BETWEEN StartDate AND EndDate AS DateInRange FROM DemoTable1448;
BETWEEN समावेशी है और तुलना श्रृंखला के बराबर है।
DATETIME कॉलम के लिए
-- NOW() DATETIME देता है; तुलना के लिए DATE() में परिवर्तित करें SELECT DATE(NOW()) BETWEEN StartDate AND EndDate AS DateInRange FROM DemoTable1448;