2012-12-23 62 views
21

我想將datetime轉換爲時間戳,但mysql給了我警告,並且轉換後的值也是錯誤的。這裏是SQL查詢轉換MySQL日期時間到時間戳

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在時間戳字段。

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id; 

回答

13

試試這個請:

UPDATE table1 A, table2 B 
SET B.date_added = FROM_UNIXTIME(A.date_added) 
WHERE A.id=B.id 

Reference。 看起來你的格式化日期戳的方式有問題。 也請看看這篇文章:Should I use field 'datetime' or 'timestamp'?

+0

我也試過,但爲什麼有時間差異表A'2012-02-23 06:12:45' B'2012-12-23 21:01:57' – Maximus

+0

有一些奇怪的東西時區和FROM_UNIXTIME,請參閱http://stackoverflow.com/a/17128732/20774以獲取解釋 –

15

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

在MySQL 5.5這工作得很好:

UPDATE `some_table` 
SET `timestamp_col` = `datetime_col` 

type DATETIMEdatetime_coltype TIMESTAMPtimestamp_col

即:不需要顯式類型轉換。