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

MySQL में DATE_FORMAT() से वर्ष को नजरअंदाज करके डेट रेंज क्वेरी करना

वर्ष की परवाह किए बिना महीना-दिन रेंज द्वारा फ़िल्टर करना

यदि आप केवल महीना और दिन के आधार पर रिकॉर्ड फ़िल्टर करना चाहते हैं (जैसे "जनवरी 1 से मार्च 31 तक किसी भी वर्ष के"), तो DATE_FORMAT(date_col, '%m-%d') के साथ BETWEEN उपयोग करें।

टेबल और डेटा

CREATE TABLE ignoreYearDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ShippingDate DATE
);

INSERT INTO ignoreYearDemo (ShippingDate) VALUES
('2016-01-31'), ('2018-01-31'), ('2015-06-23'), ('2015-06-23'),
('2014-02-01'), ('2019-01-31'), ('2019-02-14'), ('2019-03-12');

क्वेरी: जनवरी 1 से मार्च 31 तक (किसी भी वर्ष)

SELECT * FROM ignoreYearDemo
WHERE DATE_FORMAT(ShippingDate, '%m-%d') BETWEEN '01-01' AND '03-31';

आउटपुट

+----+--------------+
| Id | ShippingDate |
+----+--------------+
| 1  | 2016-01-31   |
| 2  | 2018-01-31   |
| 5  | 2014-02-01   |
| 6  | 2019-01-31   |
| 7  | 2019-02-14   |
| 8  | 2019-03-12   |
+----+--------------+

जून की तारीखें (06-23) बाहर रहीं।

महत्वपूर्ण विचार

  • स्ट्रिंग तुलना: '%m-%d' स्ट्रिंग तुलना करता है; यह '01-01' से '03-31' तक लेक्सिकोग्राफिकली काम करता है क्योंकि महीना और दिन दोनों शून्य-पैडेड हैं।
  • वर्ष-सीमा पार करने वाली रेंज: जैसे '12-01' से '01-31' — यह काम नहीं करेगा क्योंकि '12-01' > '01-31'। ऐसे मामले में OR उपयोग करें: WHERE DATE_FORMAT(d, '%m-%d') >= '12-01' OR DATE_FORMAT(d, '%m-%d') <= '01-31'।
  • इंडेक्स उपयोग नहीं: फ़ंक्शन कॉल के कारण इंडेक्स उपयोग नहीं होगा। बड़े टेबल पर MONTH() और DAY() के साथ कम्पोजिट इंडेक्स या जनरेटेड कॉलम पर विचार करें।

वैकल्पिक: MONTH() और DAY()

SELECT * FROM ignoreYearDemo
WHERE (MONTH(ShippingDate) = 1 AND DAY(ShippingDate) >= 1)
   OR (MONTH(ShippingDate) = 3 AND DAY(ShippingDate) <= 31)
   OR (MONTH(ShippingDate) = 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

  1. - MySQL में DATE_ADD और INTERVAL से दिनांक/समय में सेकंड जोड़ें

    DATE_ADD() के साथ INTERVAL n SECOND का उपयोग करके DATETIME/TIMESTAMP कॉलम में सेकंड जोड़ें। टेबल बनाएं mysql> CREATE TABLE DemoTable1867 (ArrivalTime DATETIME); डेटा डालें mysql> INSERT INTO DemoTable1867 VALUES(2019-10-12 12:34:45); mysql> INSERT INTO DemoTable1867 VALUES(2019-10-12 10:0

  1. - MySQL में DATE_ADD से तारीख में वर्ष जोड़ें

    UPDATE और DATE_ADD() से मौजूदा तारीखों में अंतराल जोड़ें मौजूदा तारीख कॉलम में वर्ष (या अन्य अंतराल) जोड़ने के लिए UPDATE के साथ DATE_ADD() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec) mysql> insert into