हालांकि @jsnplank सही है कि टाइमस्टैम्प को अलग तरह से व्यवहार किया जाता है और आपको इन 2 विशेष कॉलम के लिए डेटाटाइम डेटाटाइप का उपयोग करने पर विचार करना चाहिए, हालांकि, वह त्रुटि संदेश की व्याख्या करने में विफल रहता है।
त्रुटि संदेश सबसे अधिक संभावना है कि जब कोई डिफ़ॉल्ट मान प्रदान नहीं किया जाता है और आपकी sql मोड सेटिंग्स mysql टाइमस्टैम्प फ़ील्ड के साथ कैसे व्यवहार करती है, इसके संयोजन का परिणाम है।
-
आप दोनों टाइमस्टैम्प कॉलम को बिना किसी विशिष्ट डिफ़ॉल्ट मान सेट के शून्य के रूप में परिभाषित करते हैं। इसका मतलब है कि पहले टाइमस्टैम्प कॉलम का डिफ़ॉल्ट मान current_timestamp() होगा और जब भी रिकॉर्ड बदलता है, तो उसे current_timestamp() में भी अपडेट किया जाएगा। यही कारण है कि पहला टाइमस्टैम्प फ़ील्ड त्रुटि संदेश उत्पन्न नहीं करता है, भले ही 2 में से कौन सा पहला है।
हालांकि, यदि आप स्पष्ट रूप से किसी डिफ़ॉल्ट मान को परिभाषित नहीं करते हैं, तो दूसरा शून्य नहीं टाइमस्टैम्प कॉलम का डिफ़ॉल्ट मान '0000-00-00 00:00:00' होगा।
अधिक विवरण के लिए यह ब्लॉग पोस्ट देखें ।
-
शायद no_zero_date एसक्यूएल मोड आपके सर्वर पर या तो स्पष्ट रूप से या सख्त एसक्यूएल मोड के हिस्से के रूप में भी सक्षम है। यदि आप डिफ़ॉल्ट मान के रूप में '0000-00-00 00:00:00' सेट करना चाहते हैं या किसी दिनांक फ़ील्ड में इस मान को सम्मिलित करना चाहते हैं तो यह sql मोड एक त्रुटि उत्पन्न करता है।
इसलिए, आप अपनी तालिका में टाइमस्टैम्प डेटा प्रकार का उपयोग कर सकते हैं, लेकिन दूसरे को या तो अशक्त बना सकते हैं या 0 या कोई मान्य तिथि (जैसे युग) एक स्पष्ट डिफ़ॉल्ट मान के रूप में प्रदान कर सकते हैं।
चूंकि आप इन क्षेत्रों के साथ प्रारंभ और समाप्ति तिथियों को चिह्नित कर रहे हैं, इसलिए टाइमस्टैम्प के बजाय डेटाटाइम का उपयोग करना एक अच्छा विचार हो सकता है।