mysql> describe taps;
+-------------+-------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+-------------------+-------+
| tag_id | int(11) | NO | | NULL | |
| time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
| device_id | varchar(45) | YES | | NULL | |
| device_type | varchar(45) | YES | | NULL | |
+-------------+-------------+------+-----+-------------------+-------+
mysql> INSERT INTO `taps` (tag_id, time_stamp) VALUES(0, 1451610061);
ERROR 1292 (22007): Incorrect datetime value: '1451610061' for column 'time_stamp' at row 1
WHY ??我发现了很多类似的问题,但不是这些问题看起来很黑白。
1451610061
是 有效的时间戳。我在http://www.unixtimestamp.com/检查了它,并按预期进行评估。
那么,为什么MySql不喜欢它?
答案 0 :(得分:4)
MySQL timestamp
格式为2016-02-13 15:48:29
或Y-m-d H:i:s
首先将您的timestamp
转换为该格式,然后MySQL会接受它。
如果您插入新记录而未定义时间戳,然后从该表中选择行,您会注意到它为新default
记录提供的格式。
如果您想在查询中直接转换它,请使用:
INSERT INTO `taps` (tag_id, time_stamp) VALUES(0, from_unixtime('1451610061'));
使用this Q&A on StackOverflow作为参考。 并from_unixtime documentation