При запуске UPDATE ... datetime = NOW (); будут ли все обновленные строки иметь одинаковую дату / время? - PullRequest
41 голосов
/ 12 октября 2008

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

UPDATE table SET datetime = NOW();

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

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

Ответы [ 5 ]

43 голосов
/ 12 октября 2008

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

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

5 голосов
/ 29 мая 2009

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

3 голосов
/ 04 июля 2016

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

update_date_time=now()

Теперь обновите как это

UPDATE table SET datetime =update_date_time;

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

1 голос
/ 12 октября 2008

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

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

0 голосов
/ 21 июля 2012

Ответ sqlite:

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

на тот случай, если кто-то другой искал его.

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