शून्य टाइमस्टैम्प ('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 NULL | TRUE | FALSE |
| > 0 | NULL (गलत) | 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
उपयोग के मामले
- वैध डेडलाइन/ड्यू डेट वाले रिकॉर्ड्स ढूंढना
- अनसेट/डिफ़ॉल्ट टाइमस्टैम्प फ़िल्टर करना
- डेटा गुणवत्ता जांच
- माइग्रेशन से पहले अमान्य डेटा पहचानना