问题描述:需要将Excle中用户提供的数据导入到MySQL数据库中,但是导入的过程中发现用户提供的数据很乱,尤其是在日期类型的数据上。格式各种各样,数据类型也各种各样(文本和日期类型),具体情况如下所示。
类型 | 格式 |
---|---|
日期 | 2020-01-01 |
日期 | 2020/1/1 |
文本 | 2020/1/1 |
文本 | 20.1.1 |
文本 | 2020.01.01 |
MySQL DATE_FORMAT()
用法示例
set @date:='01/2/30'; --varchar类型的日期数据
select
@date,
date_format(@date,'%Y-%m-%d') formatter,
case when @date is not null and date_format(@date,'%Y-%m-%d') is null then 0 else 1 end is_legal
解决方案:
- 经过测试,发现上面的表格中的所有类型都能够按照一定的格式进行转换。注意还要判断用户提供的数据是否合法比如(
2020/02/30
),此类数据需要专门挑出来和数据提供方确认。- 如果在Excel中进行修改,难点是文本类型的数据,需要分类型进行处理。所以当用户提供的数据含有文本类型,而且文本类型的数据的格式多样时,建议借助
MySQL
的DATE_FORMAT()
方法来处理
处理步骤:
- 将Excel中的日期格式的数据,整列复制到文本编辑器中(如:
notepad++
)- 将excle中个日期列的数据格式全部设置为
文本
类型。- 把数据内容再从文本编辑器中复制回
Excle
表格中- 将
Excle
内容导入到MySQL
的数据表中,使用DATE_FORMAT()
方法来update
一下