我们假设我在表col1
中有一个列tab1
,其中包含以下混合格式日期:
2015-03-03
2015-02-03
2017-3-6
2015-03-04
2017-11-6
将此列更新为更一致的更好的MySQL查询是什么,因此所有日期都包含前导零
答案 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
。
<强>输出:强>
在这里演示: