2011-12-18 16 views
30

Ho una tabella con una colonna DATETIME. Vorrei selezionare questo valore datetime e inserirlo in un'altra colonna.MySQL: inserire datetime in un altro campo datetime

ho fatto questo (nota: '2011-12-18 13:17:17' è il valore della ex SELEZIONA mi ha dato dal campo DATETIME):

UPDATE products SET former_date=2011-12-18 13:17:17 WHERE id=1 

e ottenere

1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near '13:17:17 WHERE itemid=1' at line 1 

Ok, ho capito che è sbagliato inserire una stringa non quotata, ma DATETIME è solo una stringa in primo luogo? Cosa do Ho messo lì? Tutto quello che voglio è affidabile trasferire il valore esistente a un nuovo campo datetime ...

EDIT:

Il motivo che mi chiedo è: io ho questa definizione speciale, DATETIME, e in qualche modo ho pensato che mi dà un po 'di sicurezza e altri vantaggi quando gestisco le date. Ora sembra che sia semplicemente un VARCHAR specializzato, per così dire.

Grazie per le vostre risposte, sembra che questo sia davvero il comportamento previsto.

risposta

56

In base alla documentazione MySQL, si dovrebbe essere in grado di racchiudere quella stringa datetime tra virgolette singole ('AAAA-MM-GG HH: MM: SS') e dovrebbe funzionare. Guardate qui: Date and Time Literals

+0

Funziona, grazie. Immagino di pensare troppo agli oggetti quando si tratta di database relazionali ... – marimba

7

Prova

UPDATE products SET former_date=20111218131717 WHERE id=1 

In alternativa, si potrebbe desiderare di guardare con lo STR_TO_DATE (vedi STR_TO_DATE(str,format)) la funzione.

7

per MySQL provare questo

INSERT INTO tabella1 (myDatetimeField) VALORI (STR_TO_DATE ('12 -01-2014 00:00:00' , '% m-% d-% Y% H:% H:% s');

verification-

select * da table1
output-datetime = 2014/12/01 00:00:00