客观的
我正在尝试将一个名为 persondata 的 .csv 文件加载到 DB alldata TABLE persondata 中,然后对其运行名字、姓氏和出生日期 (dob) 的查询。.csv 中只有 4 条记录。
csv 中的日期格式为 MM/DD/YYYY,输出应为 YYYY/MM/DD、YYYY-MM-DD 或 YYYYMMDD。
SQL
LOAD DATA LOCAL INFILE 'C:/Users/john.smith/Desktop/persondata.csv'
INTO TABLE alldata.persondata
FIELDS TERMINATED BY ','
(firstname, lastname, dob, apptdate, icd9, cpt)
SET dob = str_to_date(@dob, '%c/%e/%Y')
;
SELECT firstname, lastname, dob
FROM alldata.persondata
我收到的问题和错误消息
firstname 和 lastname 返回正确的值,但 dob 为所有 4 条记录返回 null。在 csv 文件中,前三列 (A, B, C) 是 firstname, lastname, dob。因此与表 persondata 中的顺序相同。
错误:
4 行受影响,8 个警告:1265 第 1 行的列“dob”的数据被截断 1411 日期时间值不正确:函数 str_to_date 1265 的“19850708”
我查阅的帮助页面:
(一般使用str_to_date)
如何将csv日期格式转换为mysql db
(使用'SET column = str_to_date ...')
MySql加载数据infile STR_TO_DATE返回空白?
(其他)
如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式
无法使用 SSIS 将 excel 中的 mm/dd/yyyy 转换为 csv yyyymmdd 日期格式
MySQL str_to_date 尽管格式有效,但仍会产生 NULL
附加信息:
我尝试了这个查询和它的一堆变体,但没有运气:
SET dob = date_format(str_to_date(@dob, '%c/%e/%Y'), '%Y/%c/%e')
我没有看到关于如何写这个的大量共识。有些人指定 %Y/%d/%m 的输出格式,有些人没有。但这不是 mysql 支持的唯一日期格式吗?这让我觉得我不应该写它。不确定这是否相关。我已经看到了整个事情的一些语法。我已经阅读了所有的支持页面,并且我认为我理解了“SET”命令。
*这是我在stackoverflow上的第一篇文章,所以请让我知道是否应该以不同的方式呈现