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

MySQL में केवल महीना और वर्ष संग्रहीत करने के लिए डेटा प्रकार?

सिफारिश: पूर्ण DATETIME संग्रहीत करें, निकालें जब आवश्यक

MySQL में **केवल महीना और वर्ष** के लिए कोई अंतर्निहित डेटा प्रकार नहीं है। सर्वोत्तम अभ्यास: पूर्ण DATETIME (या DATE) संग्रहीत करें और क्वेरी के समय MONTH() और YEAR() से निकालें।

सिंटैक्स

SELECT MONTH(yourDateTimeColumn) AS MonthOnly, 
       YEAR(yourDateTimeColumn) AS YearOnly 
FROM yourTableName;

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

1. टेबल बनाएं

mysql> CREATE TABLE OnlyMonthAndYear (
    -> DueDateTime DATETIME
    -> );
Query OK, 0 rows affected (0.56 sec)

2. डेटा डालें

mysql> INSERT INTO OnlyMonthAndYear VALUES('2016-12-10');
mysql> INSERT INTO OnlyMonthAndYear VALUES('2017-10-21');
mysql> INSERT INTO OnlyMonthAndYear VALUES('2018-03-25');
mysql> INSERT INTO OnlyMonthAndYear VALUES('2018-12-18');

3. डेटा देखें

mysql> SELECT * FROM OnlyMonthAndYear;
+---------------------+
| DueDateTime         |
+---------------------+
| 2016-12-10 00:00:00 |
| 2017-10-21 00:00:00 |
| 2018-03-25 00:00:00 |
| 2018-12-18 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. महीना और वर्ष निकालें

mysql> SELECT MONTH(DueDateTime) AS OnlyMonth, YEAR(DueDateTime) AS OnlyYear 
    -> FROM OnlyMonthAndYear;
+-----------+----------+
| OnlyMonth | OnlyYear |
+-----------+----------+
| 12        | 2016     |
| 10        | 2017     |
| 3         | 2018     |
| 12        | 2018     |
+-----------+----------+
4 rows in set (0.02 sec)

क्यों नहीं VARCHAR या INT?

दृष्टिकोणसमस्या
VARCHAR(7) 'YYYY-MM'सॉर्टिंग, रेंज क्वेरी, गणना मुश्किल; सत्यापन नहीं
INT YYYYMMगणना जटिल (महीना रोलओवर); दिनांक फ़ंक्शन उपयोग नहीं कर सकते
अलग कॉलम YEAR, MONTHडेटा अखंडता नहीं (महीना 13 संभव); जॉइन/फिल्टर जटिल
DATETIME/DATE**सभी दिनांक फ़ंक्शन, इंडेक्स, सत्यापन, सॉर्टिंग काम करते हैं**

प्रदर्शन के लिए इंडेक्स

CREATE INDEX idx_due_year_month ON OnlyMonthAndYear (YEAR(DueDateTime), MONTH(DueDateTime));

MySQL 8.0+ फंक्शनल इंडेक्स समर्थन करता है।

सिर्फ प्रदर्शन के लिए फॉर्मेट करें

SELECT DATE_FORMAT(DueDateTime, '%Y-%m') AS YearMonth FROM OnlyMonthAndYear;
+----------+
| YearMonth|
+----------+
| 2016-12  |
| 2017-10  |
| 2018-03  |
| 2018-12  |
+----------+

निष्कर्ष: हमेशा DATE या DATETIME उपयोग करें। एप्लिकेशन/क्वेरी लेयर पर फॉर्मेट/निकालें।

  1. - MySQL में केवल घंटे और मिनट कैसे प्रदर्शित करें?

    DATE_FORMAT() फ़ंक्शन का उपयोग करके समय प्रारूपित करना केवल घंटे और मिनट प्रदर्शित करने के लिए DATE_FORMAT() का उपयोग करें और फॉर्मेट स्पेसिफायर सेट करें: SELECT DATE_FORMAT(yourColumnName, %H:%i) AS anyAliasName FROM yourTableName; आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable1527 ( Arr

  1. - MySQL में महीने और वर्ष की शुरुआत से वाउचर मूल्य का कुल योग गिनना

    परिचय MySQL में MONTH() और YEAR() फंक्शन्स का उपयोग करके तिथि से महीना और वर्ष निकालकर, वर्तमान महीने/वर्ष के रिकॉर्ड फ़िल्टर करके योग निकाला जा सकता है। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (1.40 sec) INSERT INTO DemoTable1562 VALUES(450, 2019-10-13); Query OK, 1 row af

  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)