2

問題

mySQLデータベース テーブル MYTABLE の日付形式を、実際の日時形式フィールド date から安全に変換する必要あります。データベース。

PHP、mySql、Drupal を使用しています。

私のアプローチ

私の歩み

  1. テーブルのフィールド タイプを日時からタイムスタンプに変更 [完了]

  2. 実際のコンテンツ タイプ フィールドの変換: タイムスタンプ [DONE]

  3. PHP strtotime() または MYSQL を使用して 4 つのテーブルの既存の記事データ フィールドを変換する: UNIX_TIMESTAMP(date)

PT.3で助けが必要

A. pt でのアルゴリズムに関する少しのヘルプ。3:

例えば

  loop over all 4 tables {

       - create a new column date2 of type: int (or datetime?) 
       - copy all dates from date to date2 passing them through strtotime()
       - delete column date
       - rename column date2 to column date

}
4

2 に答える 2

0

まず、このようなデータを変換する最も安全な方法は、その場で変換しないことです。

私が最初に行うことは、テーブルに別の列を追加することです。次に、既存のデータを変更していないことを考えると、Unix_timestamp mysql 関数の使用を検討します。すでに日付データ型でデータを保存している場合、mysql がそれを行うのは適切で安全であるように思われます。

それを考えると、次のようなものを実行するのは簡単なことのようです:

update MyTable set newtimeStampColumn=UNIX_TIMESTAMP(oldDateColumn);

そしてそれがどのように機能するかを見てください。その後、いくつかの比較クエリを実行して、すべてのデータが正しく変換されたことを確認できます。

于 2013-09-11T11:19:26.573 に答える
0
  1. テーブルをバックアップする
  2. バックアップが問題なく安全かどうかを確認する
  3. テーブルのフィールド タイプを datetime から varchar に変更します
  4. update table set field=unix_timestamp(field)
  5. テーブルのフィールド タイプを varchar から int に変更します

しかし、私はそのような変換をまったく行いません

于 2013-09-11T11:18:39.730 に答える