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

MySQL में महीना और वर्ष के अनुसार GROUP BY कैसे करें?


MySQL में DATE_FORMAT() और GROUP BY का उपयोग करके महीना और वर्ष के अनुसार डेटा ग्रुप करें।

सिंटैक्स

SELECT DATE_FORMAT(yourColumnName, '%m-%Y') 
FROM yourTableName 
GROUP BY MONTH(yourColumnName), YEAR(yourColumnName) DESC;

उदाहरण

टेबल बनाना

mysql> create table GroupMonthAndYearDemo (
-> DueDate datetime
-> ); Query OK, 0 rows affected (1.49 sec)

विभिन्न वर्षों की तारीखें डालना

mysql> insert into GroupMonthAndYearDemo values(now());
mysql> insert into GroupMonthAndYearDemo values(date_add(now(),interval 2 year));
mysql> insert into GroupMonthAndYearDemo values(date_add(now(),interval -2 year));
mysql> insert into GroupMonthAndYearDemo values(date_add(now(),interval 1 year));
mysql> insert into GroupMonthAndYearDemo values(date_add(now(),interval -1 year));

सभी रिकॉर्ड देखना

mysql> select *from GroupMonthAndYearDemo;
+---------------------+
| DueDate             |
+---------------------+
| 2018-12-06 13:12:34 |
| 2020-12-06 13:12:59 |
| 2016-12-06 13:13:08 |
| 2019-12-06 13:13:14 |
| 2017-12-06 13:13:19 |
+---------------------+

महीना-वर्ष के अनुसार ग्रुप करना

mysql> select DATE_FORMAT(DueDate, '%m-%Y') from GroupMonthAndYearDemo
-> GROUP BY MONTH(DueDate), YEAR(DueDate) DESC;
+-------------------------------+
| DATE_FORMAT(DueDate, '%m-%Y') |
+-------------------------------+
| 12-2020                       |
| 12-2019                       |
| 12-2018                       |
| 12-2017                       |
| 12-2016                       |
+-------------------------------+

DATE_FORMAT फॉर्मेट कोड

कोडअर्थउदाहरण
%mमहीना (01-12)12
%Y4-अंकीय वर्ष2024
%bसंक्षिप्त महीना नामDec
%Mपूरा महीना नामDecember
%y2-अंकीय वर्ष24

अन्य उपयोगी पैटर्न

-- प्रत्येक महीने की गिनती के साथ
SELECT DATE_FORMAT(DueDate, '%m-%Y') as MonthYear, COUNT(*) as cnt
FROM GroupMonthAndYearDemo
GROUP BY YEAR(DueDate), MONTH(DueDate)
ORDER BY YEAR(DueDate) DESC, MONTH(DueDate) DESC;

-- वर्ष-महीना फॉर्मेट में (सॉर्टिंग के लिए बेहतर)
SELECT DATE_FORMAT(DueDate, '%Y-%m') as YearMonth, COUNT(*) 
FROM table_name GROUP BY YearMonth ORDER BY YearMonth DESC;

नोट

MySQL 5.7+ में ONLY_FULL_GROUP_BY मोड के कारण, SELECT में उपयोग किए गए सभी गैर-कुल कॉलम GROUP BY में होने चाहिए या फंक्शनल रूप से निर्भर होने चाहिए।


  1. - MySQL में MONTH() और YEAR() का उपयोग करके विशिष्ट महीने और वर्ष के रिकॉर्ड्स कैसे चुनें

    MONTH() और YEAR() फंक्शन्स के साथ डेट फ़िल्टरिंग विशिष्ट महीने और वर्ष के रिकॉर्ड्स चुनने के लिए MONTH() और YEAR() फंक्शन्स का उपयोग WHERE क्लॉज में करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentName VARCHAR(40), StudentAdmissionDate DATE ); रिकॉर्ड्स इन्सर्ट कर

  1. - MySQL में FROM_UNIXTIME() और MONTH() का उपयोग करके टाइमस्टैम्प को महीने में परिवर्तित करना

    MySQL में UNIX टाइमस्टैम्प से महीना निकालना UNIX टाइमस्टैम्प (1970-01-01 से सेकंड) को महीने में परिवर्तित करने के लिए, पहले FROM_UNIXTIME() का उपयोग करके DATETIME में परिवर्तित करें, फिर MONTH() का उपयोग करके महीना निकालें। उदाहरण: टाइमस्टैम्प से महीना निकालना SELECT * FROM DemoTable1457; +-------

  1. - MySQL में MONTH() और YEAR() से विशिष्ट माह-वर्ष के रिकॉर्ड प्राप्त करें

    डेट कॉलम से माह और वर्ष निकालकर फ़िल्टर करने के लिए MySQL के MONTH() और YEAR() फ़ंक्शन का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1846 ( PurchaseDate DATE ); डेटा डालें mysql> INSERT INTO DemoTable1846 VALUES(2019-01-10); mysql> INSERT INTO DemoTable1846 VALUES(2019-12-24)