Al ejecutar ACTUALIZAR ... fecha y hora = AHORA (); ¿Todas las filas actualizadas tendrán la misma fecha / hora?

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

Pregunta

Cuando ejecutas algo similar a:

UPDATE table SET datetime = NOW();

en una tabla con 1 000 000 000 de registros y la consulta tarda 10 segundos en ejecutarse, ¿tendrán todas las filas exactamente el mismo tiempo (minutos y segundos) o tendrán tiempos diferentes? En otras palabras, ¿será el momento en que se inició la consulta o cuando se actualiza cada fila?

Estoy ejecutando MySQL, pero creo que esto se aplica a todos los dbs.

¿Fue útil?

Solución

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

  

" NOW () devuelve un tiempo constante que indica el momento en que la declaración comenzó a ejecutarse. (Dentro de una rutina o desencadenante almacenado, NOW () devuelve la hora a la que comenzó a ejecutarse la rutina o la declaración de activación). Esto difiere del comportamiento de SYSDATE (), que devuelve la hora exacta en que se ejecuta a partir de MySQL 5.0. 13) "

Otros consejos

Si el resultado final es importante para usted, pruébelo primero, solo porque 'debería' funcionar como está documentado, no significa que lo hará. En caso de duda, prueba!

Asigne NOW () a una variable y luego actualice la fecha y hora con la variable:

update_date_time=now()

ahora actualice así

UPDATE table SET datetime =update_date_time;

corrija la sintaxis, según sus requisitos

Deberían tener el mismo tiempo, se supone que la actualización es atómica, lo que significa que, independientemente de cuánto tiempo se lleve a cabo, se supone que la acción se produce como si todo se hiciera al mismo tiempo.

Si experimenta un comportamiento diferente, es hora de cambiar por otro DBMS.

La respuesta de sqlite es

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

en caso de que alguien más lo estuviera buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top