MySQL-使用datetime和timestamp字段批量插入数据

MySQL-使用datetime和timestamp字段批量插入数据,mysql,Mysql,所以,我在玩一个数据库,试图学习MySQL。我已经准备好了一个创建数据库的脚本,而不是试图批量填充数据。除了我的datetime和timestamp字段之外,一切看起来都很好 这是我遇到问题的表格: DROP TABLE IF EXISTS TestMsgs; CREATE TABLE TestMsgs ( msg_id int NOT NULL AUTO_INCREMENT, user_id int, content varchar(200), time_s

所以,我在玩一个数据库,试图学习MySQL。我已经准备好了一个创建数据库的脚本,而不是试图批量填充数据。除了我的datetime和timestamp字段之外,一切看起来都很好

这是我遇到问题的表格:

DROP TABLE IF EXISTS TestMsgs;
CREATE TABLE TestMsgs (
    msg_id int NOT NULL AUTO_INCREMENT, 
    user_id int,
    content varchar(200), 
    time_submitted datetime,
    last_update timestamp,
    PRIMARY KEY (msg_id)
) ENGINE=INNODB;
因此,我想在添加记录时手动设置日期时间,然后在每次更新记录时自动更新时间戳

当我尝试批量填充以下数据时:

LOAD DATA LOCAL INFILE "testmsgs.txt" REPLACE INTO TABLE TestMsgs
    FIELDS TERMINATED BY '|' (user_id, content, time_submitted);

content of testmsgs.txt:
    1|test1|10/22/2013 10:30
    1|test2|10/22/2013 10:31
    1|test3|10/22/2013 10:32
我得到以下结果:

+----------+---------+---------+---------------------+-------------+
|  msg_id  | user_id | content | time_submitted      | last_update |
+----------+---------+---------+---------------------+-------------+
|        1 |       1 | test1   | 0000-00-00 00:00:00 | NULL        |
|        2 |       1 | test2   | 0000-00-00 00:00:00 | NULL        |
|        3 |       1 | test3   | 0000-00-00 00:00:00 | NULL        |
+----------+---------+---------+---------------------+-------------+

有什么好处?正确的方法是什么?

MySQL的时间戳/日期时间格式是
YYYY-MM-DD HH:MM:SS
。你正在做的是
MM/DD/YYYY HH:MM
,所以MySQL根本不知道如何处理它。您需要使用MySQL的
STR\u-to\u-DATE
函数进行转换


请注意@ceejayoz关于日期时间和时间戳字段的正确格式所说的话

要使时间戳字段按您所希望的方式工作,您需要将
上次更新
字段定义更改如下:

last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
defaultcurrent\u TIMESTAMP
定义在创建记录时提供当前时间戳。
更新当前时间戳时的
定义提供了更新记录更改时的时间戳的功能。

您关于日期格式的评论是正确的。但是在这种情况下,由于导入使用的是
加载数据。。。infle
语法,导入时无法进行
STR_to_DATE()
转换,因此需要修改文件中的基础数据。@MikeBrant一个可能的解决方案是将该列设置为
VARCHAR
,然后在导入到新列后进行转换。@ceejayoz我喜欢该解决方案。谢谢