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

MySQL में टाइमस्टैम्प कॉलम सेट है या नहीं जांचना

शून्य टाइमस्टैम्प ('0000-00-00') जांचना

MySQL में TIMESTAMP कॉलम में '0000-00-00 00:00:00' (शून्य मान) डाला जा सकता है। सेट/अनसेट जांचने के लिए DueDate > 0 या DueDate != '0000-00-00' का उपयोग करें।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable855(DueDate TIMESTAMP);
Query OK, 0 rows affected (0.54 sec)

रिकॉर्ड्स इन्सर्ट करना (एक शून्य टाइमस्टैम्प के साथ)

mysql> INSERT INTO DemoTable855 VALUES
    ('2019-08-07'),('0000-00-00'),('2019-07-06'),('2016-04-10');
Query OK, 4 rows affected (...)

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

mysql> SELECT * FROM DemoTable855;
+----------------------+
| DueDate              |
+----------------------+
| 2019-08-07 00:00:00  |
| 0000-00-00 00:00:00  |
| 2019-07-06 00:00:00  |
| 2016-04-10 00:00:00  |
+----------------------+
4 rows in set (0.00 sec)

सेट टाइमस्टैम्प वाले रिकॉर्ड्स की क्वेरी

mysql> SELECT * FROM DemoTable855 WHERE DueDate > 0;

परिणाम

+----------------------+
| DueDate              |
+----------------------+
| 2019-08-07 00:00:00  |
| 2019-07-06 00:00:00  |
| 2016-04-10 00:00:00  |
+----------------------+
3 rows in set (0.03 sec)

कैसे काम करता है

  • MySQL में TIMESTAMP (और DATETIME) का शून्य मान '0000-00-00 00:00:00' होता है
  • संख्यात्मक तुलना में, शून्य टाइमस्टैम्प = 0
  • वैध टाइमस्टैम्प > 0 (यूनिक्स एपोक 1970 के बाद)
  • WHERE DueDate > 0 शून्य मानों को फ़िल्टर करता है

अल्टरनेटिव तरीके

स्ट्रिंग तुलना

WHERE DueDate != '0000-00-00 00:00:00'
WHERE DueDate <> '0000-00-00'

IS NOT NULL (यदि कॉलम NULLable है)

WHERE DueDate IS NOT NULL
-- नोट: '0000-00-00' NULL नहीं है, यह एक मान है

YEAR() फंक्शन

WHERE YEAR(DueDate) > 0

NULL vs शून्य टाइमस्टैम्प

पहलूNULL'0000-00-00'
अर्थकोई मान नहीं / अज्ञातस्पष्ट शून्य/अमान्य डेट
IS NULLTRUEFALSE
> 0NULL (गलत)FALSE (0 नहीं > 0)
इन्सर्टINSERT ... (DueDate) VALUES (NULL)INSERT ... VALUES ('0000-00-00')

SQL मोड प्रभाव

NO_ZERO_DATE मोड सक्षम होने पर '0000-00-00' अस्वीकृत होता है:

SET sql_mode = 'NO_ZERO_DATE';
INSERT INTO DemoTable855 VALUES('0000-00-00'); -- एरर!

बेहतर अभ्यास: NULL उपयोग करें

CREATE TABLE BetterTable(
    DueDate TIMESTAMP NULL DEFAULT NULL  -- NULL डिफ़ॉल्ट, शून्य डेट नहीं
);

फिर जांचें: WHERE DueDate IS NOT NULL

उपयोग के मामले

  • वैध डेडलाइन/ड्यू डेट वाले रिकॉर्ड्स ढूंढना
  • अनसेट/डिफ़ॉल्ट टाइमस्टैम्प फ़िल्टर करना
  • डेटा गुणवत्ता जांच
  • माइग्रेशन से पहले अमान्य डेटा पहचानना
  1. MySQL में कैसे चेक करें कि कौन सा डेटाबेस चुना गया है? MySQL में कैसे चेक करें कि कौन सा डेटाबेस चुना गया है?

    हम इसे DATABASE() मेथड की मदद से DUAL से चेक कर सकते हैं। मान लीजिए, हम डेटाबेस business का उपयोग कर रहे हैं। क्वेरी निम्न है − mysql> USE business; Database changed अब हम DATABASE() को DUAL से चेक कर सकते हैं कि कौन सा डेटाबेस चुना गया है। क्वेरी निम्न है − mysql> SELECT DATA

  1. MySQL में sql_mode को स्थायी रूप से कैसे सेट करें? MySQL में sql_mode को स्थायी रूप से कैसे सेट करें?

    कॉन्फ़िगरेशन फ़ाइल (my.cnf / my.ini) संपादित करें sql_mode को स्थायी रूप से सेट करने के लिए MySQL कॉन्फ़िगरेशन फ़ाइल में [mysqld] सेक्शन के तहत जोड़ें। चरण डेटा डायरेक्टरी पता करें: SELECT @@datadir; उस निर्देशिका में my.cnf (Linux) या my.ini (Windows) खोजें। [mysqld] सेक्शन में जोड़ें: sql_mode=T

  1. - MySQL संस्करण कैसे जांचें

    आइए समझते हैं कि उपयोगकर्ता वर्तमान में जो MySQL संस्करण चला रहा है, उसकी जांच कैसे करें: कंसोल पर क्वेरी दर्ज करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि उपयोगकर्ता सर्वर से जुड़ा हुआ है। MySQL संस्करण जांचें नीचे दी गई क्वेरी सर्वर के संस्करण संख्या और वर्तमान तारीख देगी। mysql> SELECT