2013-05-09 81 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 
相關問題