2012-10-16 6 views
5

नीचे CREATE TABLE बयान मेरी तालिका बनाने के लिए प्रयोग किया जाता है:0000-00-00 00:00:00 MySQL दिनांक समय के रूप में दर्ज

CREATE TABLE IF NOT EXISTS `data_received` (
`id` int(10) unsigned NOT NULL, 
`edit_time` datetime NOT NULL} 

नीचे है डेटा को तालिका में बचाया जाता है जबकि 'edit_time' मूल्य है नहीं प्रदान की है:

id edit_time 
1 0000-00-00 00:00:00 

अब, अगर मैं निम्नलिखित बयान निष्पादित करें:

मैं परिणाम प्राप्त: NULL

क्या कोई मुझे समझने में मदद कर सकता है कि क्या हो रहा है?

उत्तर

4

ऐसा इसलिए है क्योंकि 0000-00-00 00:00:00 फ़ंक्शन द्वारा स्वीकृत DATETIME अभिव्यक्ति मान्य नहीं है।

कृपया documentation देखें।

2

इस विधि का उपयोग mysql

`edit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Auto-update time' 
+0

आपके उत्तर के लिए धन्यवाद। आप कृपया कैसे "पर अद्यतन CURRENT_TIMESTAMP" कार्य/काम करता है व्याख्या कर सकते हैं? –

+0

@ शाहरियर एनखंडोकार: यदि आप तालिका में डेटा को संशोधित करने के लिए अद्यतन विवरण का उपयोग करते हैं, तो 'edit_time' कॉलम को वर्तमान समय, पर अपडेट किया जाएगा, इसलिए आपको सीधे डेटाबेस में' edit_time' के मान को सम्मिलित/अपडेट करने की आवश्यकता नहीं होगी। और 'edit_time' मूल्य हमेशा मान्य होगा। –

1

0000-00-00 00:00:00 में संपादित समय रखने के लिए शायद null रूप में व्याख्या की जाएगी। और TIMESTAMPDIFF में null की तुलना करने से null परिणाम होगा।

MySQL दस्तावेज़ कहते हैं

MySQL में, शून्य तारीख भले ही इस तिथि में ही मान्य नहीं होता, के रूप में '0000-00-00' परिभाषित किया गया है।

0

साल शून्य में शून्य का कोई zeroth नहीं है, तो आप तब से समय की गणना नहीं कर सकते हैं:

SELECT TIMESTAMPDIFF(HOUR, '0000-00-00 00:00:00', NOW()) 

शून्य

जाहिर MySQL साल के साथ एक समस्या नहीं है 0 स्वयं, क्योंकि यह परिणाम देता है:

SELECT TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', NOW()) 
2

Mysql "मददगार" होना करने की कोशिश में बकवास सम्मिलित करने के लिए जाता है। बेस्ट यह सख्त मोड के लिए ऐसा नहीं सेटिंग्स mysql से तो यह और अधिक की तरह एक डेटाबेस चाहिए व्यवहार करती है बताने के लिए।

SET sql_mode='STRICT_ALL_TABLES' 

विवरण के लिए कृपया manual पढ़ें।

संबंधित मुद्दे