CSV 日期格式转 MySQL 日期格式
Posted
技术标签:
【中文标题】CSV 日期格式转 MySQL 日期格式【英文标题】:CSV date format to MySQL date format 【发布时间】:2017-12-17 17:51:52 【问题描述】:当我尝试将 CSV 文件导入 mysql 时,所有日期都变为 0000-00-00
。
CSV 日期格式为 DD/MM/YYYY
,例如 2016 年 11 月 16 日。
MySQL 格式为:YYYY/MM/DD
。我正在使用 phpmyadmin 来导入它。如何解决这个日期转移?
【问题讨论】:
【参考方案1】:DD/MM/YYYY
格式在 MySQL 中不是有效日期。您可以使用 LOAD DATA
和 STR_TO_DATE
将日期字符串解析为 MySQL 可以识别的实际日期:
LOAD DATA INFILE 'path/to/file.csv'
INTO TABLE yourTable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
(
col1, col2, @var1, col4
)
SET date_col = STR_TO_DATE(@var1, '%d/%m/%Y')
以上假设您的表格有 4 列,并且您从 CSV 文件中读取的第三列是麻烦的日期。这里的诀窍是每个日期字符串都会被动态映射到有效的日期类型,从而为您提供所需的结果。
【讨论】:
感谢您的回复。我是新来的。您能告诉我在哪里可以使用此代码来执行我的 .csv 文件吗?在phpmyadmin里面? 你可以直接从 MySQL 执行。 我尝试了同样的方法,但为什么我得到Error Code: 1193. Unknown system variable 'DATE'
【参考方案2】:
我想,你需要在添加到MYSQL数据库之前更改日期格式。
$old_date = date('dd/mm/yyyy');
$middle = strtotime($old_date);
$new_date = date('yyyy/mm/dd', $middle);
【讨论】:
感谢您的回复。我是新来的。您能告诉我在哪里可以使用此代码来执行我的 .csv 文件吗?在phpmyadmin里面?【参考方案3】:另一种选择是将CSV Lint plug-in 用于记事本++。该插件可以检测 csv 文件中的数据类型,包括日期时间格式。您只需选择重新格式化即可将所有 DD/MM/YYYY
值更改为 YYYY/MM/DD
格式。
或者,除了使用LOAD DATA INFILE
,还有一个菜单选项可以将 csv 文件转换为 SQL 插入脚本。
它将为 csv 文件中的每一行创建 INSERT
语句,批量为 1000 条记录。此外,它还考虑了列数据类型和日期时间格式,它会自动将日期值转换为正确的 SQL 日期时间。
生成的 SQL 脚本还包含一个 CREATE TABLE
部分,其中每个列的数据类型都正确。
【讨论】:
以上是关于CSV 日期格式转 MySQL 日期格式的主要内容,如果未能解决你的问题,请参考以下文章