在Mysql中为具有不同日期格式的字段均匀化

时间:2018-01-20 16:47:21

标签: mysql regex case

我正在使用Mysql工作台。

我在csv中有一个庞大的数据库,其中包含3列不同格式的日期。 为了能够将此csv文件加载到我的数据库中,我必须将3个日期列设置为文本,否则,它不会正确上载它们。 这是我的数据示例:

inDate,                   outDAte
19-01-10,                 02-02-10
04-01-11 12:02,           2011-01-11 11:31
29-01-11 6:57,            29-03-2010
30-03-10,                 01-04-2010
2012-12-03 05:39:27.040,  12-12-12 17:04
2012-12-04 13:47:01.040,  29-11-12

我希望将它们同质化,并使其中每一列的两列只有“日期”而其他只有“时间”。

我尝试过使用“正则表达式”和“案例” 当我使用“reg表达式”给我空值而“case”给了我“截断不正确的值”。

我试图在网上找到类似的情况。我发现人们遇到了类似的问题,但有两种日期格式并没有像我这么多不同的格式:

我真的很新,我不知道如何在mysql中编写这么多异常。

1 个答案:

答案 0 :(得分:0)

将CSV加载到临时表中;按摩该表中的值;最后复制到真实的'表

每个日期在该表中有2列;一个来自CSV的原始值;另一个是DATETIME(3)(或任何已经消毒的版本)。

针对每种截然不同的格式执行其中一项:

UPDATE tmp SET inDate = ...
           WHERE raw_inDate REGEXP '...';

WHERE可能需要AND LENGTH(inDate) = 8之类的内容以及除REGEXP以外的其他方式进行测试。

SUBSTRING_INDEX(inDate, '-', ...)可能是分割日期的便捷功能。

但是,实际上,我宁愿用Perl或其他一些真正的编程语言编写代码。