2016-05-16 72 views
0

我有一个数据库与多个表使用日期字段。格式表与日期格式的varchar日期mysql

它们中的一些具有这种格式,如varchar(10)dd-mm-yyyy和其他具有dd-mm-yyyyyyyy-mm-dd的混合。

我试图改变字段的格式DATE,然而,一切都在dd-mm-yyyy转成0000-00-00

有一种正确的方式把所有的VARCHAR处理的日期类型,只有DD-MM-YYYY成日期格式在改变字段类型之前混合日期格式的故事?

date 
-------- 
01-12-2015 *** change this 
05-11-2016 *** this 
01-04-2016 *** and this 
2016-05-11 +++ and keep the ones on this format 
+0

'UPDATE YOUR_TABLE SET COMUMN_NAME = STR_TO_DATE(COMUMN_NAME, '%Y-%间 - %d');' – Saty

+0

的[mySQL的转换VARCHAR到可能的复制日期](http://stackoverflow.com/questions/4706289/mysql-convert-varchar-to-date) –

+0

如果你使用的是编程语言,你可以轻松做到这一点...例如(在PHP中),' $ newField =新日期('Ym-d',$ oldField)',然后更新记录。 – KST

回答

0
UPDATE `table` 
SET `Fecha`=date_format(str_to_date(`Datefield`, '%d-%m-%Y'), '%Y-%m-%d') 
WHERE date_format(str_to_date(`Datefield`, '%d-%m-%Y'), '%Y-%m-%d') IS NOT NULL 

此工作正常