عند تشغيل UPDATE ... التاريخ والوقت = NOW (). سوف كافة الصفوف المحدثة لديها نفس التاريخ / الوقت؟

StackOverflow https://stackoverflow.com/questions/195173

سؤال

عند تشغيل شيئا مشابها:

UPDATE table SET datetime = NOW();

وعلى طاولة مع 000 1 000 000 السجلات ويأخذ الاستعلام 10 ثانية لتشغيل، وجميع الصفوف لديها نفس الوقت بالضبط (الدقائق والثواني) أم أن لديهم أوقات مختلفة؟ وبعبارة أخرى، سوف تكون هذه هي المرة عندما بدأ الاستعلام أو عند تحديث كل صف؟

وأنا على التوالي الخلية، ولكن أنا أفكر وهذا ينطبق على كل DBS.

هل كانت مفيدة؟

المحلول

HTTP: // ديف. mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now

<اقتباس فقرة>   

و"NOW () بإرجاع وقت ثابت الذي يشير إلى الوقت الذي بدأ تصريح لتنفيذه. (ضمن روتين المخزنة أو المشغل، NOW () ترجع الوقت الذي بدأ البيان الروتيني أو التسبب في تنفيذ). وهذا يختلف عن سلوك SYSDATE ()، والتي ترجع في الوقت المحدد الذي ينفذ اعتبارا من الخلية 5.0.13 ".

نصائح أخرى

وإذا كانت النتيجة النهائية هو مهم بالنسبة لك - اختبار عليه، فقط لأنه 'يجب' للعمل كما هو موثق، لا يعني أنها ستفعل ذلك. إذا كنت في شك، واختبار!

وتعيين NOW() إلى متغير ثم تحديث التاريخ والوقت مع متغير:

update_date_time=now()

والآن تحديث مثل هذه

UPDATE table SET datetime =update_date_time;

وتصحيح لغوي، وفقا للشرط الخاص بك

وأنها ينبغي أن يكون في الوقت نفسه، من المفترض أن يكون الذري، وهذا يعني أنه مهما كم من الوقت يستغرق لتنفيذ التحديث، من المفترض أن يحدث كما لو تم كل ذلك في نفس الوقت العمل.

إذا كنت تعاني من سلوك مختلف، فقد حان الوقت لتغيير لDBMS آخر.

والجواب سكليتي هو

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

وفي حالة شخص آخر كان يبحث عن ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top