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

MySQL में तिथि के आधार पर रिकॉर्ड्स खोजना - DATE() फ़ंक्शन का उपयोग

MySQL में DATETIME या TIMESTAMP कॉलम से केवल तिथि भाग की तुलना करने के लिए DATE() फ़ंक्शन का उपयोग करें। यह समय घटक को अनदेखा करके केवल तिथि पर फ़िल्टर करने की अनुमति देता है।

सिंटैक्स

SELECT * FROM table_name WHERE DATE(datetime_column) = 'YYYY-MM-DD';

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE DemoTable732 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    PassengerId INT,
    PassengerName VARCHAR(100),
    PassengerAge INT,
    PassengerTravelDatetime DATETIME
);
Query OK, 0 rows affected (0.67 sec)

mysql> INSERT INTO DemoTable732 (PassengerId, PassengerName, PassengerAge, PassengerTravelDatetime) VALUES 
(110, 'Chris', 25, '2019-07-23 12:45:56'),
(120, 'Robert', 24, '2019-07-21 11:05:00'),
(120, 'Sam', 26, '2019-07-21 11:05:00');
Query OK, 3 rows affected (0.25 sec)

2. सभी रिकॉर्ड्स देखें

mysql> SELECT * FROM DemoTable732;
+----+-------------+---------------+--------------+-------------------------+
| Id | PassengerId | PassengerName | PassengerAge | PassengerTravelDatetime |
+----+-------------+---------------+--------------+-------------------------+
| 1  | 110         | Chris         | 25           | 2019-07-23 12:45:56     |
| 2  | 120         | Robert        | 24           | 2019-07-21 11:05:00     |
| 3  | 120         | Sam           | 26           | 2019-07-21 11:05:00     |
+----+-------------+---------------+--------------+-------------------------+
3 rows in set (0.00 sec)

3. विशिष्ट तिथि पर यात्रा करने वाले यात्रियों की गिनती

mysql> SELECT COUNT(Id) FROM DemoTable732 
WHERE PassengerId = 120 
  AND DATE(PassengerTravelDatetime) = '2019-07-21';
+-----------+
| count(Id) |
+-----------+
| 2         |
+-----------+
1 row in set (0.00 sec)

DATE() फ़ंक्शन के अन्य उपयोग

तिथि सीमा

SELECT * FROM DemoTable732 
WHERE DATE(PassengerTravelDatetime) BETWEEN '2019-07-20' AND '2019-07-25';

वर्तमान तिथि के सापेक्ष

-- आज
WHERE DATE(datetime_col) = CURDATE()

-- कल
WHERE DATE(datetime_col) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

-- इस सप्ताह
WHERE DATE(datetime_col) >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)

महीना/वर्ष निकालना

SELECT * FROM DemoTable732 
WHERE MONTH(PassengerTravelDatetime) = 7 
  AND YEAR(PassengerTravelDatetime) = 2019;

प्रदर्शन चेतावनी ⚠️

WHERE क्लॉज में DATE() फ़ंक्शन इंडेक्स उपयोग को रोकता है!

बेहतर विकल्प: रेंज क्वेरी

-- इंडेक्स उपयोग करता है (यदि datetime_col पर इंडेक्स है)
WHERE datetime_col >= '2019-07-21 00:00:00' 
  AND datetime_col < '2019-07-22 00:00:00'

-- या DATE() के साथ जनरेटेड कॉलम (MySQL 5.7+)
ALTER TABLE DemoTable732 
ADD travel_date DATE AS (DATE(PassengerTravelDatetime)) STORED,
ADD INDEX idx_travel_date (travel_date);

सारांश

  • DATE(datetime) - केवल तिथि भाग निकालता है
  • सरल क्वेरीज़ के लिए ठीक, बड़े टेबल्स पर प्रदर्शन समस्या
  • उत्पादन में रेंज क्वेरी या जनरेटेड कॉलम + इंडेक्स प्राथमिकता दें
  1. - MySQL में तिथि रिकॉर्ड से तिथि खोजने का सबसे तेज़ तरीका

    BETWEEN ऑपरेटर का उपयोग करके तिथि रेंज खोज सबसे तेज़ और आसान तरीका MySQL BETWEEN कीवर्ड का उपयोग करना है। पहले टेबल बनाएं: create table DemoTable1413 ( EmployeeName varchar(20), EmployeeJoiningDate datetime ); Query OK, 0 rows affected (0.45 sec) रिकॉर्ड डालें: insert into DemoTable1413 values(Car

  1. - MySQL में दिनांक रिकॉर्ड डालने का सबसे आसान तरीका - STR_TO_DATE()

    MySQL में STR_TO_DATE() फ़ंक्शन का उपयोग करके विभिन्न स्ट्रिंग फॉर्मेट को दिनांक में बदलकर डाला जा सकता है। सिंटैक्स STR_TO_DATE(string, format) उदाहरण: Jan 2018 फॉर्मेट तालिका बनाएं: mysql> CREATE TABLE DemoTable (JoiningYear VARCHAR(20)); mysql> INSERT INTO DemoTable VALUES (Jan 2018), (Ma

  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