2013-01-17 16 views
8

Ho una colonna date1 che è varchar tipo voglio questa colonna per date tipo. Ho provato a cambiare campo ma tutte le date sono state convertite in 0000-00-00. Il formato è dd-mm-yyyy ma in varchar.Converti colonna varchar fino ad oggi in mysql a livello di database

Come posso convertire lo stesso formato di data ma con il formato della data utilizzando query SQL o simili ma a livello di database?

+0

Penso che questo argomento sarà utile http://stackoverflow.com/questions/731456/convert-dates-with-mysql –

risposta

17
UPDATE `table` 
SET `column` = str_to_date(`column`, '%d-%m-%Y'); 

più su STR_TO_DATE funzione.


Dal momento che il nome della colonna è date1, è possibile sostituire column con date1 nella sintassi sopra, e il codice deve essere:

UPDATE `table` 
SET `date1` = str_to_date(`date1`, '%d-%m-%Y'); 
+0

Grazie per la query Funziona per me –

+0

Non sarebbe ancora il tipo di colonna 'VARCHAR' anche se? – Brian

+0

@Brian L'OP ha affermato di aver provato a cambiare tipo di colonna che ha danneggiato i loro dati. Stavo suggerendo il metodo per conservare i dati prima di cambiare il tipo di colonna. – hjpotter92

1

uso STR_TO_DATE Funzione di MySQL

In primo luogo è è necessario aggiornare il valore nel formato della data.

UPDATE `tbl` SET `date1` = STR_TO_DATE(`date1`, '%d-%m-%Y') WHERE 1=1 

THEN Convertire il campo fino ad oggi.

Ricordare soprattutto di inserire la data come formato Y-m-d, dopodiché.

3

Le altre risposte qui sono rischiose, perché se sbagliano perderai i tuoi dati. Un modo più sicuro per farlo è quello di creare un nuovo campo nel database con una data (o DATETIME se avete bisogno di tempo pure) formato, poi per eseguire una query come

UPDATE `table` SET `my_new_date_field` = STR_TO_DATE(`my_old_data_field`, '%d/%m/%Y'); 

In questo modo, se il %d/%m/%Y bit è sbagliato, non perderete i vostri dati.

Una volta che sei felice, puoi cancellare il vecchio campo dati e rinominare quello nuovo.