Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में JOINING और RELIEVING डेट के बीच वर्तमान डेट खोजना

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);
  1. - MySQL DATE फ़ंक्शन: वर्तमान तिथि और जॉइनिंग तिथि के बीच अंतर ज्ञात करें

    MySQL में DATEDIFF() का उपयोग करके तिथि अंतर गणना MySQL में DATEDIFF() फ़ंक्शन दो तिथियों के बीच दिनों का अंतर लौटाता है। वर्तमान तिथि के लिए CURDATE() और स्ट्रिंग को तिथि में बदलने के लिए STR_TO_DATE() का उपयोग करें। वर्तमान तिथि जांचना SELECT CURDATE(); +------------+ | curdate() | +-----------

  1. - MySQL में STR_TO_DATE और CURDATE से वर्तमान दिनांक वाले रिकॉर्ड ढूंढें

    स्ट्रिंग कॉलम में संग्रहीत दिनांक की तुलना वर्तमान दिनांक से करने के लिए STR_TO_DATE() से पार्स करें और CURDATE() से तुलना करें। सिंटैक्स SELECT * FROM टेबल_नाम WHERE STR_TO_DATE(कॉलम_नाम, फॉर्मेट_स्पेसिफायर) = CURDATE(); उदाहरण: DD/MM/YYYY प्रारूप में दिनांक 1. टेबल बनाएं (स्ट्रिंग कॉलम) ); 2.

  1. - MySQL क्वेरी दिनांक रिकॉर्ड को सप्ताह के दिन के साथ घटाएं और रिकॉर्ड के साथ सप्ताह का दिन प्रदर्शित करें

    इसके लिए आप DATE_FORMAT() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1820 ( AdmissionDate varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1820 values(20/10/2019); Qu