0

我面临一个问题,即在 Mysql 中将日期字段维护为 varchar。用户可以输入不同格式的日期,例如:

1990/02/22
22/02/1990
22-02-1990
02/22/1990

我需要将这些转换为一种日期格式 dd-mm-yyyy。有没有一种干净的方法可以做到这一点?我正在使用 phpmyadmin,当我尝试时:

select STR_TO_DATE(cust_dob, 'dd-mm-yyyy') from my_table;

我得到所有领域的 00-00-0000。有谁知道我应该怎么做?

4

1 回答 1

1

作为您的问题,我猜您将要从一个没有组织、没有格式或从许多来源收集的数据集中维护/检索数据。因此,您面临的主要问题是数据规范化。

我认为你可以做以下事情:

mysql> SELECT REPLACE('31/12/2013', '/', '-');
        -> 'www.mysql'
  • 将数据重新排列成统一的形式,例如'dd-mm-yyyy'。这是最复杂的,因为在您的示例数据中,不知道它们是格式 month/day 还是 day/month。如果您也不知道,我认为可以猜测 (您可以根据数据本地化猜测,大多数数据或数据本身的概率,例如数字> 12的字段肯定是天)。通过猜测,您已准备好接受错误率,并在发现错误数据时更新它。

  • 通过子字符串规范化数据并按顺序将其加入 http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_substring-index

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);

    -> 'www.mysql' 

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);

    -> 'mysql.com'

  • 一切完成后,只需使用选择

    STR_TO_DATE(cust_dob, 'dd-mm-yyyy') 来自 my_table;

注意:我想像 python 这样的编程语言可以让事情变得更容易。试试看。

希望这可以帮助我对我的英语不好感到抱歉

于 2013-08-30T19:18:02.283 回答