2017-11-17 1 views
0

habe ich eine Tabelle mit zwei Zeitstempel Felder gebildet mit -Copy Zeitmarkenwert nicht von einer Spalte zu einem anderen

CREATE TABLE `test` 
(`id` INT NOT NULL AUTO_INCREMENT , 
`first_date` TIMESTAMP NULL , 
`second_date` TIMESTAMP on update CURRENT_TIMESTAMP() NULL , 
PRIMARY KEY (`id`)) ENGINE = InnoDB; 

I eingefügt zwei Reihen mit

INSERT INTO `test` (`id`, `first_date`, `second_date`) 
VALUES (NULL, NULL, '2017-10-18 17:02:14'), (NULL, NULL, '2017-10-18 17:02:14'); 

Nun, ich brauche die zweite kopieren Datumswert für die erste Datumsspalte, aber wenn ich die Aktualisierungsabfrage ausprobiere, wird der Datumswert auf das heutige Datum aktualisiert.

update test set first_date = second_date where id=<row_id> 

id | first_date   | second_date 
---------------------------------------------- 
3 | 2017-11-17 16:09:03 | 2017-11-17 16:09:29 --> This value was 
4 | NULL    | 2017-10-18 17:02:14  "2017-10-18 17:02:14" 
5 | NULL    | 2017-10-18 17:02:14  before the update query. 

Irgendwie das on update CURRENT_TIMESTAMP() Attribut des second_date schafft hier ein Problem. Wie würde ich den Wert aus der zweiten Spalte kopieren, ohne den vorhandenen Wert second_date zu beeinflussen?

+0

kann ich das Attribut entfernen und die Update-Abfrage auszuführen und das Attribut wieder neu zuweisen. Gibt es einen anderen Weg, um fortzufahren? – jitendrapurohit

+0

Erstellen Sie eine weitere Tabelle mit ID- und zweiten Datumswerten. Verwenden Sie diese als Eingaben für eine Aktualisierungsabfrage. Aber das zweite Datum wird aktualisiert. (ODER ändern Sie die Tabelle, um die Aktualisierungsbedingung vorübergehend zu entfernen ... nicht meine bevorzugte Option) –

+1

Ich bin neugierig, warum erwarte ich, dass es sich nicht ändert? Es ist speziell dafür eingerichtet * update * !? Aber es scheint, wenn Sie nur das 'second_date' in das Update aufnehmen, bekommen Sie, was Sie brauchen. https://www.db-fiddle.com/f/crg1DF4qn7wF5VKqu5Zy6R/0 (nicht sicher, wenn das Standardverhalten ist) – Yoshi

Antwort

1

Die folgende Abfrage sollen Ihnen helfen, den Wert aus dem zweiten Spalte zu kopieren, ohne den vorhandenen Wert von second_date zu beeinflussen:

UPDATE test SET first_date = second_date , second_date = second_date WHERE id=<row_id> 
Verwandte Themen