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

Max*_*mus 26 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;
Run Code Online (Sandbox Code Playgroud)

警告

+---------+------+--------------------------------------------------------------------------+
| Level   | Code | Message                                                                  |
+---------+------+--------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '2011-06-11 20:29:02' for function str_to_date |
+---------+------+--------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

结果

+---------------------+---------------------+
| date_added          | date_added          |
+---------------------+---------------------+
| 2012-02-23 06:12:45 | 2012-12-23 19:08:33 |
+---------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下查询,但它显示时间戳字段中的00:00:00.

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;
Run Code Online (Sandbox Code Playgroud)

Oma*_* S. 20

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日期时间转换为时间戳.


bon*_*igo 17

请试试这个:

UPDATE table1 A, table2 B 
SET B.date_added = FROM_UNIXTIME(A.date_added) 
WHERE A.id=B.id
Run Code Online (Sandbox Code Playgroud)

参考.您似乎对格式化日期stammp的方式存在问题.另请查看这篇文章:我应该使用字段'datetime'还是'timestamp'?


And*_*rea 7

在 MySQL 5.5 上,这工作正常:

UPDATE `some_table`
SET `timestamp_col` = `datetime_col`
Run Code Online (Sandbox Code Playgroud)

datetime_col类型和类型。DATETIMEtimestamp_colTIMESTAMP

即:不需要显式类型转换。