2013-05-09 99 views
0

MySQL的更新将删除一些行现场数据,而不是对其进行更新当我运行这个MySQL声明为什么mysql更新会清除字段数据?

UPDATE 
    tablename 
SET 
    date = DATE_FORMAT(STR_TO_DATE(date, "%d/%m/%Y"), "%Y-%m-%d") 

我试图更新日期格式从2013年5月8日至2013年5月8日,使它所以我可以搜索其中$日期和$日期

+0

什么是列'的数据类型日期'和它将删除_before_更新的字段中的值? – 2013-05-09 08:34:18

回答

0

之间的日期试试这个:

UPDATE tablename SET `date` = STR_TO_DATE(`date`, '%d/%m/%Y') 

,然后更改列的数据类型这样

ALTER TABLE tablename CHANGE COLUMN `date` `date` DATE 

或可替代

update tablename SET date = DATE_FORMAT(STR_TO_DATE(date,'%d/%m/%y'),'%y-%m-%d') 
+0

@Breezy这是否帮助你? – anonymous 2013-05-09 09:11:22

+0

谢谢匿名...工作完美 – Breezy 2013-05-09 09:15:58

+0

@Breezy我很高兴它帮助...如果这是正确的答案,请选择它作为你对这个问题的回答:) – anonymous 2013-05-09 09:21:45

0

你应该确保你的date场是真实DATEDATETIME数据类型。在此之后,

UPDATE tablename 
SET `date` = STR_TO_DATE(old_date, '%d/%m/%Y') 

然后,你就能够做到的日期一切正常算术:加,减,比较,排序等

0

MySQL的STR_TO_DATE()采取一个字符串返回datetime值和一个特定的格式字符串作为参数。

如果指定为字符串的日期或时间或日期时间值是非法的,该函数返回NULL所以您在SELECT语句中所有的价值首先要知道,如果它的返回null

Select DATE_FORMAT(STR_TO_DATE(date, "%d/%m/%Y"), "%Y-%m-%d") from tablename 
相关问题