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: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
参照 。日付stammpのフォーマット方法に問題があるようです。また、この投稿をご覧ください: フィールド「datetime」または「timestamp」を使用する必要がありますか?
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日時をタイムスタンプに変換するのに十分です。
MySQL 5.5では、これは正常に機能します。
UPDATE `some_table`
SET `timestamp_col` = `datetime_col`
datetime_col
of type DATETIME
およびtimestamp_col
of type TIMESTAMP
。
つまり、明示的な型変換の必要はありません。
'%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