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

MySQL में MONTH() और DAY() का उपयोग करके वर्तमान दिनांक के दिन और महीने के साथ तिथि रिकॉर्ड्स की तुलना करना

MySQL में दिन और महीने के आधार पर तिथि फ़िल्टरिंग

वर्ष की परवाह किए बिना विशिष्ट दिन और महीने पर पड़ने वाली तिथियों को ढूंढने के लिए (जैसे वर्षगाँठ, जन्मदिन), MONTH() और DAY() फ़ंक्शन का उपयोग करके तिथि भागों की तुलना करें।

उदाहरण: आज की तिथि से मेल खाने वाली वर्षगाँठ ढूंढना

पहले एक वर्षगाँठ तिथि टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable1429 (
    -> AnniversaryDate DATE
    -> );

mysql> INSERT INTO DemoTable1429 VALUES
    -> ('2019-09-29'), ('2018-09-27'),
    -> ('2016-09-28'), ('2015-09-29');
Query OK, 4 rows affected (0.09 sec)

mysql> SELECT * FROM DemoTable1429;
+-----------------+
| AnniversaryDate |
+-----------------+
| 2019-09-29      |
| 2018-09-27      |
| 2016-09-28      |
| 2015-09-29      |
+-----------------+
4 rows in set (0.00 sec)

mysql> SELECT CURDATE();
+------------+
| curdate()  |
+------------+
| 2019-09-29 |
+------------+
1 row in set (0.00 sec)

दिन और महीने के मिलान के साथ क्वेरी

mysql> SELECT * FROM DemoTable1429
    -> WHERE MONTH(AnniversaryDate) = MONTH(CURDATE())
    ->   AND DAY(AnniversaryDate) = DAY(CURDATE());

परिणाम

+-----------------+
| AnniversaryDate |
+-----------------+
| 2019-09-29      |
| 2015-09-29      |
+-----------------+
2 rows in set (0.00 sec)

प्रदर्शन विचार

नोट: कॉलम पर फ़ंक्शन का उपयोग (MONTH(col)) इंडेक्स उपयोग को रोकता है। बड़े टेबल के लिए:
  • गणना किए गए कॉलम जोड़ें: month_col INT GENERATED ALWAYS AS (MONTH(AnniversaryDate))
  • उन गणना किए गए कॉलम पर इंडेक्स बनाएं
  • या दिन/महीने संयोजनों के लिए एक लुकअप टेबल का उपयोग करें

वैकल्पिक दृष्टिकोण

-- DATE_FORMAT का उपयोग (स्ट्रिंग तुलना)
SELECT * FROM DemoTable1429
WHERE DATE_FORMAT(AnniversaryDate, '%m-%d') = DATE_FORMAT(CURDATE(), '%m-%d');
  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

  1. - MySQL के साथ वर्तमान दिनांक पर पंजीकरण करने वाले लोगों की संख्या प्राप्त करें

    इसके लिए आप COUNT() का उपयोग MONTH() के साथ GROUP BY कर सकते हैं। वर्तमान दिनांक से मिलान के लिए CURRENT_DATE() का उपयोग करें। वर्तमान दिनांक निम्न है: mysql> select curdate() ; +------------+ | curdate() | +------------+ | 2019-11-30 | +------------+ 1 row in set (0.00 sec) आइए पहले एक टेबल बना

  1. - MySQL में वर्तमान तारीख और अगले दिन के रिकॉर्ड कैसे चुनें?

    MySQL में शिपिंग/डिलीवरी तारीख के आधार पर आज और कल के रिकॉर्ड चुनने के लिए, CURDATE() फंक्शन के साथ IN ऑपरेटर या रेंज तुलना का उपयोग करें। यह डैशबोर्ड, नोटिफिकेशन, और शेड्यूलिंग क्वेरीज़ के लिए सामान्य आवश्यकता है। उदाहरण: आज और कल की शिपिंग वाले ग्राहक वर्तमान तारीख जांचें: mysql> SELECT CURD