我正面临一个问题,即在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。谁知道我应该做什么?
答案 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'
即可
来自my_table的STR_TO_DATE(cust_dob,'dd-mm-yyyy');
希望这对我的英语不好有所帮助和抱歉