【问题标题】:Excel dates cannot be converted to desired formatExcel 日期无法转换为所需格式
【发布时间】:2021-01-23 00:44:29
【问题描述】:

我正在尝试使用以下方法将 .csv 文件中的数据导入 MySQL:

LOAD DATA LOW_PRIORITY LOCAL INFILE 'file_path_here' 
REPLACE INTO TABLE `pitch_data` 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id,AT_BAT_NUMBER,etc.,...,ZONE)
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y')
;

但是将 GAME_DATE 从 MM/DD/YYYY(在 .csv 文件中)转换为所需格式,YYYY-MM-DD 没有发生(我收到“错误代码:1292。日期值不正确” : '10/30/2019' for column 'GAME_DATE' at row 1" 消息)。

我尝试在 .xlsx 文件中手动更改 GAME_DATE 列的格式以保存并复制到 .csv 文件,但即使在 .xlsx 文件中我也无法更改格式。奇怪的是,当我选择“格式化单元格”选项时,它表明数据已经采用 YYYY-MM-DD 格式,但它们在眼睛上显示为 MM/DD/YYYY。我用“文本到列”向导尝试了类似的方法,但没有运气。

任何帮助将不胜感激!

从评论中添加代码:

当然。这是 .csv 的一个子集:

id AT_BAT_NUMBER GAME_DATE 
1  79            10/30/2019 
2  79            10/30/2019

和 SQL 代码:

LOAD DATA LOW_PRIORITY LOCAL INFILE 'FILE_PATH_TO_CSV' 
REPLACE INTO 
TABLE pitch_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES 
(id,AT_BAT_NUMBER,GAME_DATE) 
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y') 

【问题讨论】:

  • 这应该可以,但您仍然必须提供一个 [mr] 示例 csv 和该示例的完整代码

标签: mysql csv date formatting


【解决方案1】:

你必须像这样首先设置用户定义的变量

LOAD DATA LOW_PRIORITY LOCAL INFILE 'FILE_PATH_TO_CSV' 
REPLACE INTO 
TABLE pitch_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES 
(id,AT_BAT_NUMBER,@GAME_DATE) 
SET GAME_DATE = STR_TO_DATE(@GAME_DATE, '%m/%d/%Y') 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 2015-10-25
  • 1970-01-01
相关资源
最近更新 更多