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

发布于 2024-07-06 22:40:52 字数 221 浏览 7 评论 0原文

当您运行类似以下内容时:

UPDATE table SET datetime = NOW();

在包含 1 000 000 000 条记录的表上,并且查询需要 10 秒才能运行,所有行是否具有完全相同的时间(分钟和秒)还是具有不同的时间? 换句话说,时间是查询开始时还是每行更新时?

我正在运行 MySQL,但我认为这适用于所有数据库。

When you run something similar to:

UPDATE table SET datetime = NOW();

on a table with 1 000 000 000 records and the query takes 10 seconds to run, will all the rows have the exact same time (minutes and seconds) or will they have different times? In other words, will the time be when the query started or when each row is updated?

I'm running MySQL, but I'm thinking this applies to all dbs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夏雨凉 2024-07-13 22:40:52

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

“NOW() 返回一个常量时间,指示语句开始执行的时间。(在存储例程或触发器中,NOW() 返回例程或触发语句开始执行的时间。)与 SYSDATE() 的行为不同,从 MySQL 5.0.13 开始,后者返回执行的确切时间”

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

"NOW() returns a constant time that indicates the time at which the statement began to execute. (Within a stored routine or trigger, NOW() returns the time at which the routine or triggering statement began to execute.) This differs from the behavior for SYSDATE(), which returns the exact time at which it executes as of MySQL 5.0.13. "

时光病人 2024-07-13 22:40:52

NOW() 分配给变量,然后用变量更新日期时间:

update_date_time=now()

现在像这样更新

UPDATE table SET datetime =update_date_time;

,根据您的要求纠正语法

Assign NOW() to a variable then update the datetime with variable:

update_date_time=now()

now update like this

UPDATE table SET datetime =update_date_time;

correct the syntax, as per your requirement

極樂鬼 2024-07-13 22:40:52

它们应该具有相同的时间,更新应该是原子的,这意味着无论执行需要多长时间,操作都应该发生,就好像所有操作都是同时完成的一样。

如果您遇到不同的行为,那么是时候更换另一个 DBMS 了。

They should have the same time, the update is supposed to be atomic, meaning that whatever how long it takes to perform, the action is supposed to occurs as if all was done at the same time.

If you're experiencing a different behaviour, it's time to change for another DBMS.

风尘浪孓 2024-07-13 22:40:52

sqlite 的答案是

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

为了以防万一其他人正在寻找它。

The sqlite answer is

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

in case someone else was looking for it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文