0

所以,我正在玩一个试图学习 MySQL 的数据库。我有一个脚本一起创建一个数据库,我不想批量填充数据。一切似乎都很好,除了我的日期时间和时间戳字段。

这是我遇到问题的表:

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        |
+----------+---------+---------+---------------------+-------------+

是什么赋予了?这样做的正确方法是什么?

4

2 回答 2

2

MySQL 的 TIMESTAMP/DATETIME 格式是YYYY-MM-DD HH:MM:SS. 你正在做MM/DD/YYYY HH:MM,所以 MySQL 没有第一个线索来处理它。您需要使用 MySQL 的STR_TO_DATE函数进行转换。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

于 2013-10-22T16:53:41.227 回答
0

请注意@ceejayoz 所说的有关日期时间和时间戳字段的正确格式的内容。

要使您的时间戳字段以您想要的方式工作,您需要将last_update字段定义更改为如下:

last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

DEFAULT CURRENT_TIMESTAMP定义提供了记录创建的当前时间戳。该ON UPDATE CURRENT_TIMESTAMP定义提供了更新记录更改时间戳的功能。

于 2013-10-22T16:59:44.720 回答