如何转换日期并更新已连接的表

时间:2014-02-20 16:44:40

标签: mysql sql

我正在尝试根据临时表(通过csv导入)中的数据(不断更新)更新表中的列。临时表中的日期是VARCHAR(“2/20/2014 10:29:25 AM”格式),我要更新的表中的日期是DATETIME类型。

我不确定如何正确连接这两个表来根据临时表中显示的当前日期更新永久表中的日期...使用product_sku(在两个表中)作为加入字段。

以下是我尝试的内容,但不断出现SQL错误('#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'FROM ..附近使用正确的语法。 。)

Update t0 
set t0.product_available_date = 
               (SELECT STR_TO_DATE( `t1.product_available_date`,
                                    '%c/%e/%Y %H:%i' ))
                FROM cpg5443_virtuemart_products as t0 
                join cpg5443_virtuemart_products_temp as t1
                on t0.product_sku = t1.product_sku
                Where t0.product_sku='002-765-AS'

你是否看到任何明显的错误,你能告诉我如何纠正错误吗?最后,我希望where语句说“where t0.product_sku = t1.product_sku”,希望这将根据临时表中的日期为每个记录更新此列。目前,我只是使用一个product_sku测试更新。

1 个答案:

答案 0 :(得分:0)

看起来你在'002-765-AS'之后缺少括号。你发布了所有代码吗?此外,您还可以在日期格式后添加一个括号。

试试这个:

update cpg5443_virtuemart_products as t0
inner join cpg5443_virtuemart_products_temp t1 
on t0.product_sku = t1.product_sku
set t0.product_available_date = str_to_date (t1.product_available_date, 
                                              '%c/%e/%Y %H:%i:%s')
where t0.product_sku = '002-765-AS'