我有一个表,其中有一个名为“ DATE”的列,其中包含格式为“ 23-Nov-2017”的日期作为数据类型VARCHAR。我正在尝试转换此VARCHAR列,并将其存储在数据类型DATE的新列“ NEWDATE”中。
我创建了DATE类型的新列“ NEWDATE”,并且试图使用STR_TO_DATE()函数执行转换。但是,由于某种原因,我无法使其正常运行。
UPDATE table SET NEWDATE = STR_TO_DATE(DATE,'%d-%m-%Y');
在语句之后,NEWDATE列未使用任何值更新。我猜这意味着该语句不会执行。我在做什么错了?
编辑:我也尝试过STR_TO_DATE(DATE,'%d-%b-%Y')。但是,NEWDATE列中的值仍然没有变化
答案 0 :(得分:1)
您的格式'%d-%m-%Y'与您的实际日期字符串“ 23-Nov-2017”不匹配
%m
代表数字月份,并且您有一个缩写的文本月份
将%b
用于3个字符月份的值,如下所示:
STR_TO_DATE(DATE,'%d-%b-%Y')
编辑:工作台问题
这只是一个Workbench配置设置,可以阻止您不小心发布巨大更新。您可以关闭该设置,也可以通过赋予WHERE子句使其稍作修改,以使其如下所示运行。下面假设该表具有一个id
列
UPDATE table SET NEWDATE = STR_TO_DATE(DATE,'%d-%b-%Y') WHERE id<10000000;
或
UPDATE table SET NEWDATE = STR_TO_DATE(DATE,'%d-%b-%Y') WHERE id>0;