当运行UPDATE ...日期时间= NOW();将更新所有行具有相同的日期/时间?
-
10-07-2019 - |
题
当您运行类似于:
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的确切时间的行为“。
其他提示
如果最终结果是对你很重要 - 测试它首先,只是因为它“应该”为记录工作,并不意味着它会的。如有疑问,考验!
分配NOW()
给一个变量然后更新与可变日期时间:
update_date_time=now()
现在更新这样
UPDATE table SET datetime =update_date_time;
更正语法,按您的要求
它们应该具有相同的时间,更新应该是原子,这意味着不管需要多长时间来执行,动作应该发生,仿佛一切都在同一时间完成的。
如果您遇到不同的行为,它的时间为另一个DBMS改变。
SQLite的答案是
update TABLE set mydatetime = datetime('now');
如果别人一直在寻找它。
不隶属于 StackOverflow