将MySQL日期时间转换为时间戳

时间:2012-12-23 20:55:48

标签: mysql datetime timestamp

我正在尝试将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;

4 个答案:

答案 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 DATETIMEtimestamp_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