DATETIME कॉलम को केवल DATE भाग द्वारा ग्रुप करना
जब एक DATETIME कॉलम होता है और आप केवल दिनांक (टाइम भाग को अनदेखा करके) के आधार पर ग्रुप करना चाहते हैं, तो DATE() फ़ंक्शन का उपयोग करें।
सिंटैक्स
SELECT * FROM yourTableName GROUP BY DATE(yourDateTimeColumn);
उदाहरण
CREATE TABLE groupByDateDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(20),
UserPostDatetime DATETIME
);
INSERT INTO groupByDateDemo (UserName, UserPostDatetime) VALUES
('Larry', '2018-01-02 13:45:40'),
('Mike', '2018-01-02 13:45:40'),
('Sam', '2019-01-28 12:30:34'),
('David', '2019-02-10 11:35:54'),
('Maxwell','2019-02-10 11:35:54');
GROUP BY DATE() क्वेरी
SELECT * FROM groupByDateDemo GROUP BY DATE(UserPostDatetime);
आउटपुट
+----+----------+---------------------+ | Id | UserName | UserPostDatetime | +----+----------+---------------------+ | 1 | Larry | 2018-01-02 13:45:40 | | 3 | Sam | 2019-01-28 12:30:34 | | 4 | David | 2019-02-10 11:35:54 | +----+----------+---------------------+
व्याख्या
DATE(UserPostDatetime)केवलYYYY-MM-DDभाग निकालता है।- MySQL
ONLY_FULL_GROUP_BYमोड में (डिफ़ॉल्ट 5.7+),SELECT *के साथGROUP BYकेवल तभी काम करता है जब गैर-समूहीकृत कॉलम फ़ंक्शनली डिपेंडेंट हों (यहां प्राथमिक कुंजीIdहै)। - एग्रीगेशन के लिए
COUNT(*),MAX()आदि का उपयोग करें।
बेहतर अभ्यास: एग्रीगेशन के साथ
SELECT DATE(UserPostDatetime) AS PostDate, COUNT(*) AS PostsPerDay FROM groupByDateDemo GROUP BY DATE(UserPostDatetime);