it-swarm.com.de

Beim Ausführen von UPDATE ... datetime = NOW (); Haben alle aktualisierten Zeilen dasselbe Datum und dieselbe Uhrzeit?

Wenn Sie etwas Ähnliches ausführen wie:

UPDATE table SET datetime = NOW();

haben bei einer Tabelle mit 1 000 000 000 Datensätzen und einer Abfragedauer von 10 Sekunden alle Zeilen genau dieselbe Zeit (Minuten und Sekunden) oder unterschiedliche Zeiten? Mit anderen Worten, wird der Zeitpunkt sein, an dem die Abfrage gestartet wurde oder an dem jede Zeile aktualisiert wird?

Ich verwende MySQL, denke aber, dass dies für alle DBS gilt.

42
Darryl Hein

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

"NOW () gibt eine konstante Zeit zurück, die die Zeit angibt, zu der die Anweisung ausgeführt wurde. (Innerhalb einer gespeicherten Routine oder eines gespeicherten Auslösers gibt NOW () die Zeit zurück, zu der die Routine oder die auslösende Anweisung ausgeführt wurde.) Dies unterscheidet sich von Verhalten für SYSDATE (), das die genaue Uhrzeit zurückgibt, zu der es ab MySQL 5.0.13 ausgeführt wird. "

44
micahwittman

Wenn das Endresultat für Sie wichtig ist - TESTEN SIE ES ZUERST, nur weil es so funktionieren soll, wie es dokumentiert ist, heißt das nicht, dass Sie es tun werden. Im Zweifelsfall testen!

5
andora

Weisen Sie einer Variablen NOW() zu und aktualisieren Sie dann die datetime mit der Variablen:

update_date_time=now()

update jetzt so

UPDATE table SET datetime =update_date_time;

korrigieren Sie die Syntax gemäß Ihren Anforderungen

5
MRRaja

Sie sollten dieselbe Zeit haben, das Update sollte atomar sein, was bedeutet, dass die Aktion unabhängig von der Dauer der Ausführung so erfolgen soll, als ob alle zur selben Zeit ausgeführt wurden.

Wenn Sie ein anderes Verhalten feststellen, müssen Sie es für ein anderes DBMS ändern.

1
gizmo

Die SQLite-Antwort lautet

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

falls jemand anderes danach suchte.

0