Quando si esegue UPDATE ... datetime = NOW (); tutte le righe aggiornate avranno la stessa data / ora?

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

Domanda

Quando esegui qualcosa di simile a:

UPDATE table SET datetime = NOW();

su una tabella con 1 000 000 000 di record e l'esecuzione della query richiede 10 secondi, tutte le righe avranno lo stesso tempo esatto (minuti e secondi) o avranno tempi diversi? In altre parole, sarà il momento in cui la query è iniziata o quando ogni riga viene aggiornata?

Sto eseguendo MySQL, ma sto pensando che questo vale per tutti i dbs.

È stato utile?

Soluzione

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

  

" NOW () restituisce un tempo costante che indica l'ora in cui è iniziata l'esecuzione dell'istruzione. (All'interno di una routine o trigger memorizzato, NOW () restituisce l'ora in cui è iniziata l'esecuzione dell'istruzione di routine o di attivazione.) Ciò differisce dal comportamento di SYSDATE (), che restituisce l'ora esatta in cui viene eseguita a partire da MySQL 5.0. 13. & Quot;

Altri suggerimenti

Se il risultato finale è importante per te - PROVA PRIMA, solo perché "dovrebbe" funzionare come documentato, non significa che lo farà. In caso di dubbi, prova!

Assegna NOW () a una variabile, quindi aggiorna il datetime con la variabile:

update_date_time=now()

ora aggiorna in questo modo

UPDATE table SET datetime =update_date_time;

correggi la sintassi, secondo il tuo requisito

Dovrebbero avere lo stesso tempo, l'aggiornamento dovrebbe essere atomico, il che significa che qualunque sia il tempo necessario per eseguire, si suppone che l'azione si verifichi come se tutto fosse stato fatto allo stesso tempo.

Se stai riscontrando un comportamento diverso, è tempo di cambiare per un altro DBMS.

La risposta sqlite è

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

nel caso in cui qualcun altro lo stesse cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top