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

MySQL में CASE और ORDER BY का उपयोग करके दो दिनों के बीच अगला निकटतम दिन प्राप्त करना

MySQL में अगली आगामी तिथि ढूंढना

वर्तमान दिनांक के बाद की अगली निकटतम तिथि ढूंढने के लिए, भविष्य की तिथियों को प्राथमिकता देने और फिर निकटतम को क्रमबद्ध करने के लिए CASE स्टेटमेंट के साथ ORDER BY का उपयोग करें।

उदाहरण: अगली शिपिंग तिथि ढूंढना

mysql> CREATE TABLE DemoTable1454 (
    -> ShippingDate DATE
    -> );
Query OK, 0 rows affected (0.59 sec)

mysql> INSERT INTO DemoTable1454 VALUES
    -> ('2019-10-01'), ('2019-10-03'), ('2019-10-05'),
    -> ('2019-10-04'), ('2018-10-06'), ('2019-10-06');
Query OK, 6 rows affected (0.22 sec)

mysql> SELECT * FROM DemoTable1454;
+--------------+
| ShippingDate |
+--------------+
| 2019-10-01   |
| 2019-10-03   |
| 2019-10-05   |
| 2019-10-04   |
| 2018-10-06   |
| 2019-10-06   |
+--------------+
6 rows in set (0.00 sec)

mysql> SELECT NOW();
+---------------------+
| now()               |
+---------------------+
| 2019-10-04 21:30:01 |
+---------------------+
1 row in set (0.00 sec)

जटिल ORDER BY के साथ अगली तिथि क्वेरी

mysql> SELECT * FROM DemoTable1454
    -> ORDER BY (ShippingDate > NOW()) DESC,
    ->          (CASE WHEN ShippingDate > NOW() THEN ShippingDate END),
    ->          ShippingDate DESC
    -> LIMIT 1;

परिणाम

+--------------+
| ShippingDate |
+--------------+
| 2019-10-05   |
+--------------+
1 row in set (0.00 sec)

ORDER BY तर्क समझाया गया

  1. (ShippingDate > NOW()) DESC - भविष्य की तिथियाँ पहले (सत्य=1, असत्य=0, DESC → 1 पहले)
  2. CASE WHEN ShippingDate > NOW() THEN ShippingDate END - भविष्य की तिथियों को आरोही क्रम में क्रमबद्ध करता है (निकटतम पहले)
  3. ShippingDate DESC - टाई-ब्रेकर: भूतपूर्व तिथियों के लिए नवीनतम पहले
  4. LIMIT 1 - केवल शीर्ष परिणाम लौटाता है

सरल विकल्प (MySQL 8.0+)

-- भविष्य की तिथियों को फ़िल्टर करें, फिर आरोही क्रम में क्रमबद्ध करें
SELECT * FROM DemoTable1454
WHERE ShippingDate > CURDATE()
ORDER BY ShippingDate ASC
LIMIT 1;

किनारे के मामले

  • कोई भविष्य की तिथि नहीं: नवीनतम भूतपूर्व तिथि लौटाता है (तीसरे ORDER BY के कारण)
  • समान तिथियाँ: उनमें से पहली लौटाता है
  • सभी भूतपूर्व: सबसे हाल की भूतपूर्व तिथि लौटाता है
  1. - MySQL क्वेरी: दो तिथियों की सीमा के बीच सभी डेटा चुनें

    BETWEEN ऑपरेटर का उपयोग करके तिथि सीमा के बीच डेटा चुनना दो तिथियों की सीमा के बीच सभी डेटा चुनने के लिए MySQL BETWEEN का उपयोग करें: select * from yourTableName where yourColumnName between yourDateValue1 and yourDateValue2; पहले टेबल बनाएं: create table DemoTable1422 ( EmployeeId int NOT NULL AUT

  1. - MySQL में BETWEEN कीवर्ड का उपयोग करके दो तिथियों के बीच रिकॉर्ड्स का SUM प्राप्त करना

    MySQL में दिनांक सीमा के भीतर मानों का योग दिनांक सीमा के भीतर संख्यात्मक मानों का योग करने के लिए, BETWEEN ऑपरेटर के साथ SUM() एग्रीगेट फ़ंक्शन का उपयोग करें। यह बिक्री रिपोर्ट, वित्तीय विश्लेषण और समय-श्रृंखला डेटा के लिए आदर्श है। उदाहरण: तिमाही खरीद योग की गणना पहले एक खरीद टेबल बनाते हैं: SEL

  1. - MySQL में DATEDIFF() का उपयोग करके समान पंक्तियों के अलग-अलग कॉलम से दो दिनांकों के बीच दिनों की गणना करना

    MySQL DATEDIFF() के साथ दो दिनांक कॉलम के बीच अंतर एक ही पंक्ति में दो दिनांक कॉलम के बीच दिनों की संख्या की गणना करने के लिए, सीधे उन कॉलम पर DATEDIFF() का उपयोग करें। यह रोजगार अवधि, परियोजना अवधि, किराया अवधि आदि के लिए उपयोगी है। उदाहरण: कर्मचारी कार्य दिवस गणना SELECT * FROM DemoTable1471; +-