我在更新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