Mysql日期时间格式无效:1292日期时间值不正确

时间:2016-02-13 15:39:39

标签: mysql datetime

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不喜欢它?

1 个答案:

答案 0 :(得分:4)

MySQL timestamp格式为2016-02-13 15:48:29Y-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