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

MySQL में 30-दिन की रेंज में तारीखें चुनें

INTERVAL के साथ 30-दिन विंडो क्वेरी

वर्तमान तारीख से 30 दिन पहले और 30 दिन बाद की रेंज में आने वाली तारीखें चुनने के लिए अंकगणितीय ऑपरेटर और INTERVAL का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTableName
WHERE yourDateColumn > NOW() - INTERVAL 30 DAY
  AND yourDateColumn < NOW() + INTERVAL 30 DAY;

उदाहरण: टेबल और डेटा

mysql> CREATE TABLE selectDatesDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ArrivalDate DATETIME
    -> );
mysql> INSERT INTO selectDatesDemo(ArrivalDate) VALUES
('2019-01-10'), ('2019-01-29'), ('2019-02-13'), ('2019-02-19'),
('2018-02-13'), ('2018-03-13');

मान लें आज 2019-02-27 है

रेंज: 2019-01-28 से 2019-03-29 तक

क्वेरी और परिणाम

mysql> SELECT * FROM selectDatesDemo
    -> WHERE ArrivalDate > NOW() - INTERVAL 30 DAY
    -> AND ArrivalDate < NOW() + INTERVAL 30 DAY;
+----+---------------------+
| Id | ArrivalDate         |
+----+---------------------+
| 3  | 2019-02-13 00:00:00 |
| 4  | 2019-02-19 00:00:00 |
+----+---------------------+

वैकल्पिक सिंटैक्स

  • DATE_SUB(NOW(), INTERVAL 30 DAY) - 30 दिन पहले
  • DATE_ADD(NOW(), INTERVAL 30 DAY) - 30 दिन बाद
  • BETWEEN उपयोग: WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND DATE_ADD(NOW(), INTERVAL 30 DAY)

प्रदर्शन टिप

इंडेक्स उपयोग के लिए फ़ंक्शन कॉल के बजाय रेंज क्वेरी लिखें:

WHERE ArrivalDate >= '2019-01-28' AND ArrivalDate <= '2019-03-29'

सापेक्ष vs निरपेक्ष

  • सापेक्ष (NOW() आधारित): रिपोर्ट, डैशबोर्ड के लिए
  • निरपेक्ष (निश्चित तारीख): ऐतिहासिक विश्लेषण के लिए
  1. - MySQL में सबसे अधिक सैलरी कैसे चुनें?

    MAX() फ़ंक्शन किसी कॉलम का अधिकतम मान प्राप्त करने के लिए: select MAX(yourColumnName) AS anyAliasName from yourTableName; उदाहरण insert into demo44(employee_name,employee_salary) values(John,3000), (David,4500), (Bob,3500), (Carol,5500), (Mike,4900); क्वेरी और परिणाम select MAX(employee_salary)

  1. - MySQL में WHERE क्लॉज में तिथि घटाकर ROW कैसे चुनें?

    TIMESTAMPDIFF() फ़ंक्शन दो तिथियों के बीच अंतर (मिनट, घंटे, दिन आदि) निकालने के लिए: TIMESTAMPDIFF(UNIT, start_datetime, end_datetime) उदाहरण insert into demo42 values(2020-01-10 12:30:05), (2019-02-24 10:40:45), (2020-05-12 05:45:55), (2020-05-12 05:40:55), (2020-05-12 05:42:55); 5 मिनट के अंदर

  1. - MySQL में तिथि के आधार पर सशर्त रूप से BETWEEN/BEFORE/AFTER कैसे चुनें?

    सिंटैक्स select * from yourTableName where yourColumnName1 yourValue2 OR yourColumnName2 is null); उदाहरण: कर्मचारी जॉइनिंग और रिलीविंग तिथि insert into demo35(joining_date,relieving_date) values(2020-01-10,2020-07-11), (2020-05-07,2020-12-08), (2020-04-11,2020-09-18), (2020-03-12,2020-10-01);