我有一个带有日期列的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中做到这一点??
请帮我解决这两个场景。
答案 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。