在MySQL中更新日期以包含前导零

时间:2017-08-22 13:45:06

标签: mysql

我们假设我在表col1中有一个列tab1,其中包含以下混合格式日期:

2015-03-03
2015-02-03
2017-3-6
2015-03-04
2017-11-6

将此列更新为更一致的更好的MySQL查询是什么,因此所有日期都包含前导零

2 个答案:

答案 0 :(得分:3)

您应该将这些存储为日期字段 但无论如何这是你的查询

UPDATE `tab1` SET `col1` = DATE(`col1`);

答案 1 :(得分:1)

作为一个免责声明,为了抵御邪恶的灵魂以及今天曾经打过我6次的那个downvoter,你应该将你的日期存储为...日期,而不是文本。话虽这么说,如果您有这种格式的大量文本数据,您可以使用MySQL的字符串函数轻松地将其转换为日期。月份和日期字段可以是一个或两个数字,需要用零填充。然后,使用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

<强>输出:

enter image description here

在这里演示:

Rextester