web-dev-qa-db-ja.com

MySQLの日時をタイムスタンプに変換します

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;
26
Maximus

これを試してください:

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

参照 。日付stammpのフォーマット方法に問題があるようです。また、この投稿をご覧ください: フィールド「datetime」または「timestamp」を使用する必要がありますか?

17
bonCodigo

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日時をタイムスタンプに変換するのに十分です。

19
Omar S.

MySQL 5.5では、これは正常に機能します。

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

datetime_col of type DATETIME およびtimestamp_col of type TIMESTAMP

つまり、明示的な型変換の必要はありません。

3
Andrea

'%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

1
Bill Karwin