我正在尝试将datetime转换为时间戳,但是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 |
+---------------------+---------------------+
我也尝试了以下查询,但它显示了时间戳字段中的00:00:00。
UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
答案 0 :(得分:17)
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日期时间转换为时间戳。
答案 1 :(得分:16)
请试试这个:
UPDATE table1 A, table2 B
SET B.date_added = FROM_UNIXTIME(A.date_added)
WHERE A.id=B.id
Reference。 您似乎对格式化日期stammp的方式存在问题。 另请查看这篇文章:Should I use field 'datetime' or 'timestamp'?
答案 2 :(得分:3)
在MySQL 5.5上,这很好用:
UPDATE `some_table`
SET `timestamp_col` = `datetime_col`
datetime_col
type DATETIME
和timestamp_col
type TIMESTAMP
。
即:不需要显式类型转换。
答案 3 :(得分:1)
您使用'%M %d %Y %h:%i%p'
作为日期格式,但警告显示的日期字符串为“2011-06-11 20:29:02”,与该格式不匹配。即,年份为第一,时间为24小时格式。
您可以使用'%Y-%M-%d %T'
代替,该格式将匹配数据。
在此处查看有关日期格式代码的更多信息: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format