2016-02-13 4 views
1
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 

ПОЧЕМУ ??? Я нашел много похожих вопросов, но не из них, похоже, это черно-белое.Mysql Неверный формат даты и времени: 1292 Неверное значение даты и времени

1451610061является действительной метка времени. Я проверил его на http://www.unixtimestamp.com/ и оценил его как ожидалось.

Итак, почему MySql не нравится?

+1

Почему вы используете '1451610061' непосредственно на ваш запрос? попробуйте отформатировать его сначала, как уже созданное поле. –

ответ

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

+1

D; о! Я на мгновение подумал, что это целое число, представляющее количество секунд с эпохи. Очень устал после очень длинного сеанса кодирования. Спасибо, что проснулся :-) – Mawg

Смежные вопросы