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 DATASTR_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 日期格式的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin 导入日期格式困难的 csv

mysql 获取当前日期及格式化[转]

mysql时间戳转换日期格式

mysql中怎么把日期的格式转换为YYYYMMDD的数字形式,谢谢

SQLServer时间戳转日期格式(13位时间戳)

关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题