【问题标题】:MySQL converting string date to date format while updating tableMySQL在更新表时将字符串日期转换为日期格式
【发布时间】:2015-04-11 01:47:54
【问题描述】:

MySQL 查询有什么问题?它挂起没有任何错误输出! VARHR 10 中源中的日期字段,我想要目标表中的日期。

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')

谢谢!

【问题讨论】:

    标签: mysql database date


    【解决方案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)

    【讨论】:

    • 大约有 30 万条记录,查询是在我的本地机器上运行的。 2.8GHz 双核 2 GB 内存 Ubuntu+LAMP STACK
    • 戈登,我用索引试过了,问题还是一样。我从源中删除了日期为“00-00-1900”的记录也不起作用!
    【解决方案2】:

    对我有用的是这个!

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

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多