我在更新mysql表時遇到了一個問題。我有兩個字段real_date(類型:varchar(20)),event_date(類型:日期())。下面是幾個值Mysql日期更新不起作用
real_date event_date event_date(Need to b updated.)
1985-03-20 0000-00-00 1971-03-20
1989-08-20 0000-00-00 1971-08-20
1993-04-30 0000-00-00 1971-04-30
我想更新EVENT_DATE到如上圖所示。從real_date獲取月份和日期,並將年份保留爲1971年。我正在使用下面的查詢,但它不起作用您能否幫助我。
Query1 : Update table set event_date= STR_TO_DATE(concat('1971','-',DATE_FORMAT(real_date, "%m-%d")),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'
Query2 : Update table set event_date= STR_TO_DATE(concat('1971','-',SUBSTR(real_date, 6, 5)),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'
Query3 : Update table set event_date=concat('1971-',DATE_FORMAT(real_date, "%m-%d")) where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'
但是以上都不起作用。請幫幫我。
這不起作用,因爲concat()返回字符串,而event_date的數據類型是date()。 – 2013-03-12 05:49:13
@KumarSoneta記得mysql是隱含的。所以它默默地將字符串轉換爲日期。請參閱小提琴http://www.sqlfiddle.com/#!2/00a13/1 – 2013-03-12 05:55:58
@JW。 ,請檢查我的答案,我想知道您的意見作爲專家 – Amir 2013-03-12 09:01:15