将MySQL datetime转换为时间戳

将MySQL datetime转换为时间戳,mysql,datetime,timestamp,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; 警告 +---------+------+-------------------------------------------------------

我试图将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 |
+---------------------+---------------------+
我还尝试了以下查询,但它在时间戳字段中显示0000-00-00:00:00

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
请试试这个:

UPDATE table1 A, table2 B 
SET B.date_added = FROM_UNIXTIME(A.date_added) 
WHERE A.id=B.id
。 似乎你对日期戳记的格式有问题。
另外请查看此帖子:

您正在使用
'%M%d%Y%h:%i%p'
作为日期格式,但警告显示的日期字符串“2011-06-11 20:29:02”与该格式不匹配。即:年份为第一年,时间为24小时格式

您可以改用
“%Y-%M-%d%T”
,该格式将与数据匹配

有关日期格式代码的更多信息,请参见此处:

更新表1 A、表2 B设置B.date\u added=UNIX\u时间戳(A.date\u added),其中A.id=B.id

UNIX_时间戳('2015-01-15 12:00:00')
足够将mysql datetime转换为时间戳。

在mysql 5.5上,这可以正常工作:

UPDATE`some_表`
设置'timestamp\u col`='datetime\u col`
带有的
datetime\u col
和的
timestamp\u col


也就是说:不需要显式的类型转换。

我也尝试过,但是为什么会有时差表A
2012-02-23 06:12:45
table B
2012-12-23 21:01:57
有一些关于时区和UNIXTIME的奇怪的东西,请参阅以获得解释