MySQL在更新表时将字符串日期转换为日期格式

时间:2015-04-11 01:47:54

标签: mysql database date

MySQL查询有什么问题?它挂起没有任何错误输出! VARCHR 10中源代码中的日期字段,我想在目标表中使用DATE。

UPDATE fp_data_all t1 
INNER JOIN fp_data t2 
ON t1.apn = t2.apn 
SET t1.doc_date = DATE_FORMAT(STR_TO_DATE(t2.doc_date, '%m-%d-%Y'), '%Y-%m-%d')

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想在目的地date,请使用str_to_date()

UPDATE fp_data_all t1 INNER JOIN
       fp_data t2 
       ON t1.apn = t2.apn 
    SET t1.doc_date = STR_TO_DATE(t2.doc_date, '%m-%d-%Y');

如果这不能按预期工作,那么doc_date的某些值可能格式不正确。

如果查询是"挂"有几种可能性:

  • 阻止更新的桌子锁。
  • 非常繁忙的服务器和/或磁盘系统。
  • 需要很长时间才能更新的非常大的表。
  • 在桌面上触发延长更新时间。

此外,您应该在fp_data(apn)上有一个索引。这对join很重要。事实上,更好的指数是fp_data(apn, doc_date)

答案 1 :(得分:0)

对我有用的是这个!

更新fp_data,fp_data_all SET fp_data_all.doc_date = DATE_FORMAT(STR_TO_DATE(fp_data.doc_date,'%m-%d-%Y'),'%Y-%m-%d') 在哪里fp_data.apn = fp_data_all.apn