2009-05-03 13 views
34

पर बनाने के लिए मैं घटना समय याद रखने के लिए MySQL 5.x (PHP के साथ) पर टाइमस्टैम्प का उपयोग करता हूं। विकास के दौरान मुझे तालिका को एक क्वेरी के साथ अद्यतन करना था जो सभी कॉलम में कुछ बदलता था। टाइमस्टैम्प को फिर वर्तमान समय पर रीसेट कर दिया गया था।MySQL टाइमस्टैम्प केवल

मैं केवल आवेषण पर टाइमस्टैम्प परिवर्तन कैसे कर सकता हूं, अपडेट या प्रतिस्थापन पर नहीं?

+1

Google के लिए एक देर का उत्तर जो Google यह कर सकता है: यदि आप अपने डेटाबेस में मैन्युअल संपादन करते समय TIMESTAMP का उपयोग करते हैं; या यदि आपके पास एकाधिक TIMESTAMP कॉलम हैं और वे सभी को स्पर्श नहीं करना चाहते हैं; MySQL मैनुअल कॉलम को स्वयं को असाइन करने के लिए कहता है। आप स्पष्ट रूप से कॉलम को अपने वर्तमान मान (यानी "अपडेट_ऑन = अपडेट_ऑन") पर सेट करते हैं, ताकि अपडेट द्वारा इसे बदला न जा सके। –

उत्तर

65

Here's all you need to know। संक्षेप में, हालांकि, मुझे लगता है कि यह यह करना चाहिए:

ALTER TABLE `mytable` 
CHANGE `mydatefield` `mydatefield` 
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

धन्यवाद! यहां "मुझे नहीं" भाग की आवश्यकता नहीं है। –

0

आप उस क्षेत्र के लिए default value का उपयोग कर सकते हैं और इसे सम्मिलित या अद्यतन क्वेरी में शामिल नहीं कर सकते हैं।

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

बहुत अच्छा यहाँ for time-stamp प्रलेखन।

+0

मुझे कुछ याद आ रहा है लेकिन मेरी तालिका इस तरह परिभाषित है (और था) लेकिन अभी भी तिथियां बदल गई हैं। Mysql से समझाएं: 'pur_time', 'टाइमस्टैम्प', 'नहीं', '', 'CURRENT_TIMESTAMP', '' – Nir

1

मैं उस कॉलम के लिए DATETIME का उपयोग करने का सुझाव देता हूं। रिकॉर्ड अपडेट होने पर यह नहीं बदलेगा।

मेरे लिए, जब मैं आखिरी बार स्पर्श किया गया था, तो ट्रैकिंग के लिए मैं TIMESTAMP का उपयोग करता हूं, हालांकि सामान्य रूप से मैं इसका उपयोग करने से बचता हूं।

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