所以,我正在玩一个试图学习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 |
+----------+---------+---------+---------------------+-------------+
是什么给出的?这样做的正确方法是什么?
答案 0 :(得分: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
答案 1 :(得分:0)
请注意@ceejayoz所说的日期时间和时间戳字段的正确格式。
要使您的时间戳字段按您希望的方式工作,您需要将last_update
字段定义更改为如下所示:
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
定义提供记录创建的当前时间戳。
ON UPDATE CURRENT_TIMESTAMP
定义提供了更新记录更改时间戳的功能。