Преобразование MySQL datetime в timestamp
Я пытаюсь преобразовать datetime в timestamp, но mysql дает мне предупреждения, а также преобразованные значения ошибочны. Вот запрос SQL
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, '%M %d %Y %h:%i%p')) WHERE A.id=B.id;
Предупреждения
+---------+------+--------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '2011-06-11 20:29:02' for function str_to_date |
+---------+------+--------------------------------------------------------------------------+
Результат
+---------------------+---------------------+
| date_added | date_added |
+---------------------+---------------------+
| 2012-02-23 06:12:45 | 2012-12-23 19:08:33 |
+---------------------+---------------------+
Я также пробовал следующий запрос, но он показывает 0000-00-00 00:00:00 в поле timestamp.
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
Ответы
Ответ 1
Попробуйте следующее:
UPDATE table1 A, table2 B
SET B.date_added = FROM_UNIXTIME(A.date_added)
WHERE A.id=B.id
Ссылка.
Похоже, у вас есть проблема с тем, как вы форматируете дату stammp.
Также, пожалуйста, зайдите в этот пост: Должен ли я использовать поле 'datetime' или 'timestamp'?
Ответ 2
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
UNIX_TIMESTAMP('2015-01-15 12:00:00');
достаточно для преобразования mysql datetime в метку времени.
Ответ 3
В MySQL 5.5 это прекрасно работает:
UPDATE `some_table`
SET `timestamp_col` = `datetime_col`
с datetime_col
введите DATETIME
и timestamp_col
тип TIMESTAMP
.
То есть: нет необходимости явного преобразования типов.
Ответ 4
Вы используете '%M %d %Y %h:%i%p'
как формат даты, но предупреждение показывает строку даты '2011-06-11 20:29:02', которая не соответствует этому формату. I., год первый, и время находится в 24-часовом формате.
Вместо этого вы можете использовать '%Y-%M-%d %T'
, этот формат будет соответствовать данным.
Подробнее о кодах формата даты:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format