假设我在表col1中有一个列tab1,它具有以下混合格式日期:
2015-03-03
2015-02-03
2017-3-6
2015-03-04
2017-11-6什么是一个好的MySQL查询来更新这个列到更一致的内容,所以所有的日期都包含前导零。
发布于 2017-08-22 13:55:31
您应该首先将这些存储为日期字段,但无论如何,下面是您的查询
UPDATE `tab1` SET `col1` = DATE(`col1`);发布于 2017-08-22 14:00:30
作为一个免责声明,为了避开那些今天打了我6次的选民,你应该储存你的约会对象as...dates,而不是文本。尽管如此,如果您有大量这种格式的文本数据,则可以使用MySQL的string函数轻松地将其转换为日期。月份和日字段可能是一位数,也可能是两位数,需要用零填充。然后,使用带有适当格式掩码的STR_TO_DATE将标准化的日期文本带到真正的日期。
尝试以下查询:
SELECT
STR_TO_DATE(CONCAT(SUBSTRING_INDEX(col1, '-', 1),
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(col1, '-', 2), '-', -1), 2, '0'),
LPAD(SUBSTRING_INDEX(col1, '-', -1), 2, '0')), '%Y%m%d') AS new_date
FROM yourTable;如果要更新表中的新列,几乎可以逐字重用上述逻辑,只需执行UPDATE而不是SELECT。
输出:

演示这里:
Rextester
https://stackoverflow.com/questions/45819403
复制相似问题