Ho bisogno di aggiornare tutte le righe nella tabella events
. C'è la colonna event_date
con datatype datatamp.Timestamp MySql - orario diverso dopo l'aggiornamento di tutte le righe
Ma se aggiorno ogni riga (colonna event_date
) con nuova data (esempio: 2015-12-12 12:00:00) allora ho alcune righe con valore 2015-12-12 13:00:00.
Il punto è: perché alcune righe sono corrette e alcune sono + 1 ora?
In PHP sto usando quadro Nette e il suo oggetto DateTime che si estende standart PHP DateTime ...
Tutte le idee, i suggerimenti perché questo happends?
EDIT: query simile alla seguente:
UPDATE `events`
SET `event_date`='2016-2-13 12:00:00', `event_date_to`=NULL
WHERE (`id` = 203)
Valori in php io pongo in questo modo:
$row->event_date = date("Y-m-d H:i:s", $oldRow['event_date']);
problema inizia presto - in questa tabella è stata data come 2016/02/13 00 : 00: 00 ma dopo aver selezionato ed echo le date sono cambiate a 2016-2-12 23:00:00 - ma non tutte le righe ... solo qualcuno. Così faccio selezionare:
select events.id, events.event_date, events.event_date_to,
concat(year(event_date), '-', month(event_date), '-',
day(event_date), ' 12:00:00') as new_event_date,
IF(events.event_date_to IS NULL,null, concat(year(event_date_to),
'-', month(event_date_to), '-', day(event_date_to), ' 12:00:00')) as
new_event_date_to from events
che selezionano dammi righe come questo:
769,2014-04-22 19:30:00,2014-04-22 21:45:00,2014-4-22 12:00:00,2014-4-22 12:00:00
Significa: id, EVENT_DATE (valore reale db), event_date_to (valore db reale), EVENT_DATE (nuovo valore per l'inserimento), event_date_to (nuovo valore per l'inserimento - può essere NULL)
e salvati in un file csv ... Questo file sto parsing ora e in foreach aggiornare ogni riga ...
ho controllato tutte le query un d volte sono OK (12:00:00) quindi non capisco e bloccato :)
Sfortunatamente se li stai inserendo nello stesso modo, deve esserci qualcos'altro che va avanti - dubito che MySQL aggiunga l'ora in modo casuale. Forse c'è un problema di formattazione sull'inserto, o alcuni dei valori si stanno effettivamente inserendo come 13:00:00? Hai scaricato le istruzioni di inserimento esattamente (la sql) per confrontare i valori? Potresti postare alcuni di questi sql qui, magari anche con uno screenshot di come si presentano una volta inseriti? –
E come stai aggiornando quelli?Qual è la query effettiva utilizzata –
Sospetto che probabilmente dovresti usare un tipo di dati 'datetime' piuttosto che' timestamp' - i timestamp sono generalmente usati per registrare l'ultima volta che un record è interessato usando 'in aggiornamento CURRENT_TIMESTAMP' (come di circa MySQL 5.1 IIRC) – CD001