Al ejecutar ACTUALIZAR ... fecha y hora = AHORA (); ¿Todas las filas actualizadas tendrán la misma fecha / hora?
-
10-07-2019 - |
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.
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.