Подтвердить что ты не робот

При запуске UPDATE... datetime = NOW(); будут ли все обновленные строки иметь одну и ту же дату/время?

Когда вы запускаете что-то похожее на:

UPDATE table SET datetime = NOW();

на столе с 1 000 000 000 записями, и запрос занимает 10 секунд, чтобы все строки имели одинаковое время (минуты и секунды), или они будут иметь разное время? Другими словами, будет ли время запуска запроса или когда каждая строка будет обновлена?

Я запускаю MySQL, но я думаю, что это относится ко всем dbs.

4b9b3361

Ответ 1

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

"СЕЙЧАС() возвращает постоянное время, указывающее время начала выполнения оператора. (В рамках хранимой процедуры или триггера NOW() возвращает время, в которое начинает выполняться инструкция или триггер.) Это отличается от поведения для SYSDATE(), который возвращает точное время, в которое он выполняется с MySQL 5.0.13."

Ответ 2

Если конечный результат важен для вас - ПРОВЕРЬТЕ ЕГО ПЕРВЫЙ, просто потому, что он должен работать как задокументированный, не означает, что это произойдет. Если есть сомнения, проверьте!

Ответ 3

Они должны иметь одно и то же время, обновление должно быть атомарным, что означает, что независимо от того, сколько времени требуется для выполнения, действие должно происходить так, как если бы все было сделано одновременно.

Если вы столкнулись с другим поведением, время изменения для другой СУБД.

Ответ 4

Назначьте NOW() переменной, затем обновите дату-время с помощью переменной:

update_date_time=now()

теперь обновляется следующим образом

UPDATE table SET datetime =update_date_time;

исправить синтаксис, согласно вашему требованию

Ответ 5

Ответ на sqlite

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

в случае, если кто-то ищет его.