Ao executar ATUALIZAÇÃO ... datetime = NOW (); vai todos os registros atualizados têm a mesma data / hora?
-
10-07-2019 - |
Pergunta
Quando você executar algo semelhante a:
UPDATE table SET datetime = NOW();
em uma tabela com 1 000 000 000 registros ea consulta demora 10 segundos para correr, vai todas as linhas têm o mesmo tempo exato (minutos e segundos) ou será que eles têm tempos diferentes? Em outras palavras, se o tempo ser quando a consulta iniciado ou quando cada linha é atualizada?
Estou executando o MySQL, mas estou pensando isso se aplica a todos os dbs.
Solução
http: // desenv. mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now
"NOW () retorna um tempo constante que indica o momento em que a declaração começou a executar. (Dentro de uma rotina armazenado ou gatilho, NOW () retorna o tempo em que a rotina ou disparo declaração começou a executar.) Este difere do comportamento de SYSDATE (), que retorna o tempo exato em que ele executa a partir do MySQL 5.0.13. "
Outras dicas
Se o resultado final é importante para você - TEST pela primeira vez, apenas porque ele 'deveria' trabalho como documentada, não significa que ele vai. Em caso de dúvida, teste!
Atribuir NOW()
a uma variável, em seguida, atualizar a data e hora com variável:
update_date_time=now()
Agora atualização como esta ??p>
UPDATE table SET datetime =update_date_time;
corrigir a sintaxe, como por sua exigência
Eles devem ter ao mesmo tempo, a atualização é suposto ser atômica, o que significa que qualquer que seja o tempo que leva para executar, a ação é suposto ocorre como se tudo foi feito ao mesmo tempo.
Se você está experimentando um comportamento diferente, é hora de mudar para outro DBMS.
A resposta sqlite é
update TABLE set mydatetime = datetime('now');
no caso de alguém estava olhando para ele.