使用 str_to_date 从 .txt 文件读取日期类型时出现 mysql 问题

标签 mysql sql database sqldatatypes dml

我的任务是将 .txt 文件读入 mySQL 表。 这就是我所做的。

CREATE TABLE PERSON(PIDM INT, FNAME VARCHAR(20), LNAME VARCHAR(20), SSN INT(8), DOB DATE, GENDER    CHAR(2));

LOAD DATA LOCAL INFILE '/pathtoTextFile'
    INTO TABLE PERSON
    FIELDS TERMINATED BY ', '
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (PIDM, FNAME, LNAME, SSN, @DATE, GENDER)
    SET DOB = STR_TO_DATE(@DATE, '%m-%d-%Y');

但是我这样做时收到了一些警告。 包括:

+---------+------+-----------------------------------------------------------------+
| Level   | Code | Message                                                         |
+---------+------+-----------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '12/14/1957' for function str_to_date |
| Warning | 1411 | Incorrect datetime value: '01/13/1969' for function str_to_date |
| Warning | 1264 | Out of range value for column 'SSN' at row 3                    |
| Warning | 1411 | Incorrect datetime value: '02/14/1976' for function str_to_date |
| Warning | 1366 | Incorrect integer value: '' for column 'SSN' at row 4           |
| Warning | 1411 | Incorrect datetime value: '03/12/1989' for function str_to_date 

我无法弄清楚为什么我从 str_to_date 函数/方法中得到无效日期。 这应该是一个学习练习,但我已经做了大约两个小时,但没有取得任何进展。有谁有任何提示或知道我做错了什么?

谢谢

附注目的不是更改 .txt 文件以使其正常工作,而是能够处理不正确的输入。

最佳答案

这取决于源数据,但如果存在 MM/DD/YYYY 和 MM-DD-YYYY 的混合,您可以将不需要的分隔符替换为所需的分隔符,然后转换为日期。

注意:由于“Month First”和“Day First”格式“不明确”(例如 7/8/2014 可能是 7 月或 8 月的日期),因此应尽可能避免使用它们。

关于使用 str_to_date 从 .txt 文件读取日期类型时出现 mysql 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25965773/

相关文章:

MySQL order and group by varchar 性能

html - Node.js 存储以前的表单数据,并在每次提交新数据时重新运行以前的 mysql 查询

mysql - 管理 mysql 中的版本数据

sql - 更新空值

mysql - 找不到所请求的页面。 Joomla 3 网站

java - 在这种情况下,最好使用数据库还是读取文件来提高性能?

mysql - SQL 左连接查询区别

c# - SqliteDataReader 在 C# 中不起作用?

c# - 可以在 C# 构造函数中调用数据库初始化吗?

c# - 导入 sqlite 脚本以在 C# 和 t 中创建数据库