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

MySQL DATE फ़ंक्शन: वर्तमान तिथि और जॉइनिंग तिथि के बीच अंतर ज्ञात करें

MySQL में DATEDIFF() का उपयोग करके तिथि अंतर गणना

MySQL में DATEDIFF() फ़ंक्शन दो तिथियों के बीच दिनों का अंतर लौटाता है। वर्तमान तिथि के लिए CURDATE() और स्ट्रिंग को तिथि में बदलने के लिए STR_TO_DATE() का उपयोग करें।

वर्तमान तिथि जांचना

mysql> SELECT CURDATE();
+------------+
| curdate()  |
+------------+
| 2019-10-26 |
+------------+
1 row in set (0.00 sec)

टेबल बनाना (जॉइनिंग तिथि VARCHAR के रूप में संग्रहीत)

mysql> CREATE TABLE DemoTable (
    -> JoiningDate VARCHAR(40)
    -> );
Query OK, 0 rows affected (0.61 sec)

विभिन्न तिथि प्रारूपों में डेटा डालना

mysql> INSERT INTO DemoTable VALUES ('10/10/1998');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES ('31/12/2010');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES ('01/01/2017');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES ('25/10/2019');
Query OK, 1 row affected (0.14 sec)

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

mysql> SELECT * FROM DemoTable;
+-------------+
| JoiningDate |
+-------------+
| 10/10/1998  |
| 31/12/2010  |
| 01/01/2017  |
| 25/10/2019  |
+-------------+
4 rows in set (0.00 sec)

तिथि अंतर गणना करने का क्वेरी

mysql> SELECT DATEDIFF(CURDATE(), STR_TO_DATE(JoiningDate, '%d/%m/%Y')) 
    -> FROM DemoTable;

परिणाम

+---------------------------------------------------------+
| datediff(curdate(),str_to_date(JoiningDate,'%d/%m/%Y')) |
+---------------------------------------------------------+
|                                                    7686 |
|                                                    3221 |
|                                                    1028 |
|                                                       1 |
+---------------------------------------------------------+
4 rows in set (0.00 sec)

फ़ंक्शन व्याख्या

  • STR_TO_DATE(JoiningDate, '%d/%m/%Y'): 'dd/mm/yyyy' प्रारूप में स्ट्रिंग को DATE मान में बदलता है
  • CURDATE(): वर्तमान तिथि लौटाता है
  • DATEDIFF(date1, date2): date1 - date2 के दिनों में अंतर लौटाता है

तिथि प्रारूप निर्देशक

निर्देशकअर्थउदाहरण
%dदिन (00-31)25
%mमहीना (00-12)10
%Y4-अंकीय वर्ष2019
%y2-अंकीय वर्ष19

अन्य उपयोगी तिथि अंतर फ़ंक्शन

-- महीनों में अंतर
SELECT TIMESTAMPDIFF(MONTH, STR_TO_DATE(JoiningDate, '%d/%m/%Y'), CURDATE()) FROM DemoTable;

-- वर्षों में अंतर
SELECT TIMESTAMPDIFF(YEAR, STR_TO_DATE(JoiningDate, '%d/%m/%Y'), CURDATE()) FROM DemoTable;

-- पूर्ण अवधि (वर्ष, महीने, दिन)
SELECT 
    TIMESTAMPDIFF(YEAR, join_date, CURDATE()) AS years,
    TIMESTAMPDIFF(MONTH, join_date, CURDATE()) % 12 AS months,
    TIMESTAMPDIFF(DAY, join_date, CURDATE()) % 30 AS days
FROM (
    SELECT STR_TO_DATE(JoiningDate, '%d/%m/%Y') AS join_date FROM DemoTable
) AS t;

सर्वोत्तम अभ्यास

  1. तिथियों को VARCHAR के बजाय DATE/DATETIME कॉलम में संग्रहीत करें
  2. तिथि प्रारूप स्ट्रिंग्स के साथ सुसंगत रहें
  3. अंतर्राष्ट्रीयकरण के लिए ISO 8601 प्रारूप (YYYY-MM-DD) का उपयोग करने पर विचार करें
  1. - MySQL में DATEDIFF() का उपयोग करके वर्तमान दिनांक और टेबल दिनांक रिकॉर्ड्स के बीच अंतर ढूंढना

    MySQL DATEDIFF() के साथ दिनांक अंतर गणना MySQL का DATEDIFF() फ़ंक्शन दो दिनांकों के बीच दिनों की संख्या लौटाता है: DATEDIFF(दिनांक1, दिनांक2) = दिनांक1 - दिनांक2 (दिनों में)। यह देय तिथियों, आयु गणना और समय-आधारित विश्लेषण के लिए उपयोगी है। उदाहरण: देय तिथियों से दिनों का अंतर SELECT CURDATE(); +-

  1. - SQL में फ़ंक्शन और प्रोसीजर के बीच अंतर

    SQL फ़ंक्शन बनाम स्टोर्ड प्रोसीजर: मुख्य अंतर SQL में, फ़ंक्शन और प्रोसीजर दोनों पुन: प्रयोज्य कोड ब्लॉक हैं, लेकिन उनके उद्देश्य, क्षमताएं और उपयोग संदर्भों में महत्वपूर्ण अंतर हैं। परिभाषाएं फ़ंक्शन: इनपुट लेता है, गणना करता है, और एक एकल मान लौटाता है। क्वेरी में उपयोग किया जा सकता है। प्रोसीजर

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl