当运行UPDATE ...日期时间= NOW();将更新所有行具有相同的日期/时间?

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

当您运行类似于:

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');

如果别人一直在寻找它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top