2008-10-12 6 views
35

जब आप करने के लिए कुछ इसी तरह चलाएँ: 1 000 000 000 रिकॉर्ड के साथ एक मेज परअद्यतन करते समय ... डेटाटाइम = अब(); क्या सभी पंक्तियों को अपडेट किया जाएगा वही दिनांक/समय होगा?

UPDATE table SET datetime = NOW(); 

और क्वेरी चलाने के लिए 10 सेकंड लेता है, सभी पंक्तियों में ठीक उसी समय (मिनट और सेकंड) होगा या होगा उनके पास अलग-अलग समय हैं? दूसरे शब्दों में, क्या वह समय होगा जब क्वेरी शुरू हुई थी या जब प्रत्येक पंक्ति को अपडेट किया जाता है?

मैं MySQL चला रहा हूं, लेकिन मुझे लगता है कि यह सभी डीबीएस पर लागू होता है।

उत्तर

37

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now

"NOW() एक निरंतर समय है कि) एक संग्रहीत दिनचर्या या ट्रिगर के भीतर समय जिस पर बयान निष्पादित करने के लिए शुरू कर दिया। (इंगित करता है, अब (रिटर्न समय देता है जो दिनचर्या या कम से । ट्रिगर बयान

+2

एसक्यूएल एसईटी उन्मुख है, जिसका अर्थ है कि अपडेट पूरे सेट पर लागू होते हैं या बिल्कुल नहीं। अब() और SYSDATE() के बीच का अंतर यहां महत्वहीन नहीं है। दोनों मामलों में फ़ील्ड 'डेटाटाइम' को एकल/विशिष्ट मान के साथ अपडेट किया जाएगा। –

1

उनके पास एक ही समय होना चाहिए, अद्यतन परमाणु होना चाहिए, जिसका अर्थ यह है कि जो कुछ भी करने में लग रहा है, कार्रवाई होती है जैसे कि सभी एक ही समय में किए गए थे।

यदि आप एक अलग व्यवहार का अनुभव कर रहे हैं, तो यह एक और डीबीएमएस के लिए बदलने का समय है।

+0

नहीं कुछ भी सामना कर रहा है, बस आगे बढ़ने से पहले पुष्टि करें और मान लें कि यह होगा। –

3

निष्पादित करने के लिए) यह जो सही समय, जिस पर यह MySQL 5.0.13 के रूप में कार्यान्वित रिटर्न SYSDATE(), के लिए व्यवहार से अलग करना शुरू किया "अगर अंत परिणाम आप के लिए महत्वपूर्ण है। - सबसे पहले परीक्षण करें, सिर्फ इसलिए कि इसे दस्तावेज के रूप में काम करना चाहिए, इसका मतलब यह नहीं होगा। अगर संदेह में, परीक्षण!

+13

हां, परीक्षण महत्वपूर्ण हैं (+1), लेकिन निर्णय के लिए एकमात्र आधार नहीं होना चाहिए। यदि परीक्षण किया गया व्यवहार वास्तव में दस्तावेज नहीं किया गया था तो यह भविष्य में किसी भी समय बदल सकता है। हमें केवल दस्तावेजी व्यवहार पर भरोसा करना चाहिए, लेकिन यह सुनिश्चित करने के लिए इसका परीक्षण करें कि यह दस्तावेज के रूप में काम करता है। –

0

SQLite जवाब में और मामले में किसी को इसके लिए देख रहा था

update TABLE set mydatetime = datetime('now'); 

है।

+0

'mysql' में काम नहीं करते हैं – Belter

1

असाइन NOW() एक चर करने के लिए तो चर के साथ दिनांक अद्यतन:

update_date_time=now() 

अब इस

UPDATE table SET datetime =update_date_time; 

तरह अद्यतन वाक्य रचना को सही, अपने आवश्यकता के अनुसार