我将每天的销售数据上传到MySQL(Workbench)(AWS)。现在,我们上传常规日期(如5/10/2023)的方法是将包含日期的ANY AND ALL列保留为VARCHAR数据类型。因此,我不能使用任何日期关键字/范围,我们已经有了一些错别字,不得不手动更正。
我想把我们所有的表都改成DATE数据类型,我的老板是一个纯粹主义者,他想把日期直接加载到MySQL的日期中,比如5/10/2023格式,直接转换成2023-05-10。这似乎是一项简单的任务,但我在几次测试后仍然无法解决,主要涉及STR_TO_DATE和DATE_FORMAT函数。我觉得我已经接近了,但在语法上有一点不对
CSV输入文件显示为date_col = 5/10/2023
LOAD DATA LOCAL INFILE 'C:/Users/LK/Desktop/Date Import Test.csv'
INTO TABLE Test_Table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(date_col, blah_col1, blah_col2)
SET date_col = STR_TO_DATE(date_col,'%m/%d/%Y');
在最后一行,我也尝试了这种变化:
SET ld_new = DATE_FORMAT(STR_TO_DATE(ld_new, '%m/%d/%Y'), '%Y-%m-%d')
所有内容最终上传为NULL或0000-00-00。
我希望结果是2023-05-10
,MySQL将其识别为正确的日期数据类型。
2条答案
按热度按时间k2arahey1#
必须在列列表中使用用户变量。
gwbalxhn2#
**注意:**在开始应用以下内容之前,请创建表格备份,并验证所有日期值的格式是否一致。下面是如何做的链接:backup
1.首先,需要修改现有表,将包含日期值的
VARCHAR
列更改为DATE
数据类型。你可以使用ALTER TABLE
语句来实现:1.现在,您可以更改
LOAD DATA LOCAL INFILE
查询以导入CSV文件:此查询从CSV文件中读取数据,并将列Map到目标表。
@date_col
变量用于临时存储CSV文件中的日期值,然后使用格式为**%m/%d/%Y的STR_TO_DATE()
函数将其转换为正确的DATE
数据类型。转换后,日期值应该以正确的
DATE
数据类型存储在MySQL表中,默认情况下,MySQL以YYYY-MM-DD**格式表示日期。