當您運行類似於:當運行UPDATE ... datetime = NOW();將所有行更新具有相同的日期/時間?
UPDATE table SET datetime = NOW();
在表1 000 000 000的記錄和查詢需要10秒來運行,將所有的行具有完全相同的時間(分鐘和秒)或將他們有不同的時間?換句話說,查詢開始的時間或者每行更新的時間會是什麼時候?
我正在運行MySQL,但我認爲這適用於所有dbs。
當您運行類似於:當運行UPDATE ... datetime = NOW();將所有行更新具有相同的日期/時間?
UPDATE table SET datetime = NOW();
在表1 000 000 000的記錄和查詢需要10秒來運行,將所有的行具有完全相同的時間(分鐘和秒)或將他們有不同的時間?換句話說,查詢開始的時間或者每行更新的時間會是什麼時候?
我正在運行MySQL,但我認爲這適用於所有dbs。
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now
「NOW()返回一個固定的時間表示將在哪個語句開始執行的時間。(在一個存儲程序或觸發器,NOW()返回的時間,在該例程或觸發語句開始執行)。這與SYSDATE()的行爲不同,它返回從MySQL 5.0.13開始執行的確切時間。「
他們應該有同樣的時間,更新應該是原子的,這意味着無論需要多長時間執行,動作應該發生,好像所有的事情都是在同一時間完成的。
如果您遇到不同的行爲,是時候更換另一個DBMS了。
沒有遇到什麼,只是在我繼續之前確認,並假設它會。 – 2008-10-12 07:14:45
如果最終結果對您很重要 - 首先進行測試,僅僅因爲它應該按照記錄來工作,並不意味着它會。如果有疑問,測試!
是的,測試很重要(+1),但不應該是決定的唯一基礎。如果測試行爲實際上未被記錄,它將來可能會改變。我們應該僅僅依賴記錄的行爲,但要對其進行測試以確保其按照記錄進行工作。 – 2010-05-03 09:16:28
SQLite的答案的情況下,別人一直在尋找它
update TABLE set mydatetime = datetime('now');
。
在`mysql`中不起作用 – Belter 2017-12-05 07:55:44
分配NOW()
給一個變量,然後更新變量的日期時間:
update_date_time=now()
現在更新這樣
UPDATE table SET datetime =update_date_time;
更正語法,按照您的要求
SQL是面向SET的,這意味着更新適用於整個集合或根本不適用。 NOW()和SYSDATE()之間的區別在這裏不重要。在這兩種情況下,'datetime'字段都將更新爲單個/不同的值。 – 2010-05-03 09:07:36