Beim Ausführen von UPDATE ... Datetime = NOW (); werden alle aktualisierten Zeilen haben die gleiche Datum / Uhrzeit?

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

Frage

Wenn Sie laufen so etwas wie:

UPDATE table SET datetime = NOW();

auf einen Tisch mit 1 000 000 000 Datensätze und die Abfrage dauert 10 Sekunden zu laufen, werden alle Zeilen haben die exakt gleiche Zeit (Minuten und Sekunden), oder werden sie unterschiedliche Zeiten haben? Mit anderen Worten, wird die Zeit, wenn die Abfrage gestartet wird oder wenn jede Zeile aktualisiert wird?

Ich bin mit MySQL, aber ich denke, dies für alle dbs gilt.

War es hilfreich?

Lösung

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

  

"NOW (), eine konstante Zeit zurückgibt, der die Zeit angibt, die Anweisung auszuführen begann. (Innerhalb einer gespeicherten Routine oder Trigger, NOW () gibt den Zeitpunkt, zu dem die Routine oder auslösenden Anweisung auszuführen begann.) Diese unterscheidet sich von dem Verhalten für SYSDATE (), die die genaue Zeit zurückkehrt, an dem sie ab MySQL 5.0.13 führt. „

Andere Tipps

Wenn das End-Ergebnis für Sie wichtig ist - TEST IT FIRST, nur weil es ‚sollte‘, wie dokumentiert arbeiten, bedeutet nicht, es wird. Im Zweifelsfall testen!

Weisen NOW() auf eine Variable dann die Datetime mit Variable aktualisieren:

update_date_time=now()

nun wie folgt aktualisieren

UPDATE table SET datetime =update_date_time;

korrigieren Sie die Syntax, wie pro Ihre Anforderung

Sie sollten die gleiche Zeit haben, wird das Update soll Atom sein, dass alles, was bedeutet, wie lange es dauert auszuführen, wird die Aktion soll auftritt, als ob alle zur gleichen Zeit durchgeführt wurde.

Wenn Sie ein anderes Verhalten zu erleben, ist es Zeit für ein anderes DBMS zu ändern.

Die SQLite-Antwort ist

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

, falls jemand anders für sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top