Ao executar ATUALIZAÇÃO ... datetime = NOW (); vai todos os registros atualizados têm a mesma data / hora?

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

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.

Foi útil?

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top