如何将常规字符串数据(如29102015)转换为MySQL日期类型?

时间:2015-10-29 11:31:09

标签: mysql

我有一个带有日期列的csv文件,其中的数据格式只是数字。例如:29102015是当前格式,表示29-10-2015(2015年10月29日)。

iDate列中的数据如下:

iDate
02022015
02012015
02092014
11082013
11082014
13082013
11122013
27082013

它包含数百万条采用该格式的记录。

iDate的预期输出为:

iDate
02-02-2015
02-01-2015
02-09-2014
11-08-2013
11-08-2014
13-08-2013
11-12-2013
27-08-2013

我试图通过尝试以下方法来实现这一目标:

首先,我已将数据放入Mysql数据库。所以,现在我正在尝试以所需的日期格式(dd-mm-yyyy)提取SELECT查询中的日期列,这不起作用。我尝试了以下查询:

SELECT STR_TO_DATE(idate, '%d-%m-%Y') as Inter_Date FROM tf_table;

但我只是将NULL作为所有记录的输出。

我要做的第二件事是在创建MySQL表本身时,我正试图找到一种方法,如果我可以直接使数据库以所需的日期格式存储字符串日期(dd-mm-yyyy )。

有没有办法在MySQL中做到这一点??

请帮我解决这两个场景。

3 个答案:

答案 0 :(得分:1)

SELECT DATE_FORMAT(STR_TO_DATE(idate, '%d%m%Y'),'%d-%m-%Y') as Inter_Date FROM tf_table;

答案 1 :(得分:0)

只是替代方案,您可以使用类似的东西(但不推荐用于数百万条记录):

SELECT CONCAT(SUBSTRING(idate, 5, 4),'-',SUBSTRING(idate, 3, 2),'-',SUBSTRING(idate, 1, 2) ) AS Inter_Date 
FROM tf_table;

答案 2 :(得分:0)

您可以使用以下查询。

SELECT DATE_FORMAT(STR_TO_DATE(idate, '%d%m%Y'),'%d-%m-%Y')

您需要了解的另一件事是MySQL的默认日期格式是YYYY-MM-DD。