在Mysql中将String转换为日期

时间:2013-08-30 16:35:19

标签: mysql date

我正面临一个问题,即在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。谁知道我应该做什么?

1 个答案:

答案 0 :(得分:1)

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

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

mysql> SELECT REPLACE('31/12/2013', '/', '-');
        -> 'www.mysql'
  • 将数据重新排列为统一格式,例如'dd-mm-yyyy'。这是最复杂的,因为在您的示例数据中,没有线索知道它们是格式月/日还是日/月。如果您也不知道,我认为可以做出猜测 (您可以猜测可以基于数据本地化,大多数数据或数据本身的概率,如数字> 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'

  • 完成所有操作后,只需使用select

    即可
      来自my_table的

    STR_TO_DATE(cust_dob,'dd-mm-yyyy');

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

希望这对我的英语不好有所帮助和抱歉