42

日時をタイムスタンプに変換しようとしていますが、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-0000:00:00と表示されます。

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

4 に答える 4

35

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

于 2015-01-15T15:05:05.343 に答える
21

これを試してください:

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

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

于 2012-12-23T21:00:50.633 に答える
5

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

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

タイプタイプの。datetime_col_ _DATETIMEtimestamp_colTIMESTAMP

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

于 2016-02-13T18:37:12.153 に答える
2

日付形式として使用'%M %d %Y %h:%i%p'していますが、警告に日付文字列「2011-06-1120:29:02」が表示されます。これはその形式と一致しません。つまり、年が最初で、時刻は24時間形式です。

'%Y-%M-%d %T'代わりに、その形式をデータと一致させるために使用できます。

日付形式コードの詳細については、http: //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-formatを参照してください。

于 2012-12-23T21:06:19.897 に答える