1

列を DATE 形式に変換しようとしています。現在 varchar にあり、次のように表示されます: 12/06/2013

次のクエリを実行します。

UPDATE dispatch
   SET dispatchdate = DATE_FORMAT(STR_TO_DATE(dispatchdate, '%d/%m/%Y'), '%d-%m-%Y');

ALTER TABLE dispatch
      CHANGE dispatchdate dispatchdate date;

ただし、このクエリを実行すると、データが次のように表示されます: 0000-00-00

YYYY-MM-DD ではなくDD-MM-YYYY として表示されるように変更しようとしています。

4

2 に答える 2

0

0000-00-00「ゼロ」または「ダミー」の日付を表示する mysql の特別な方法です。

多くの mysql の奇妙な点と同様に、それと一緒に暮らすことを学び、次のことをお勧めします。

UPDATE dispatch SET
dispatchdate = null
WHERE dispatchdate = '0000-00-00'

または、最適な値に設定します。

于 2013-07-24T04:58:22.490 に答える
0

スクラッチ列を作成する必要があります。列のデータ型を変更することはできず、データを保持することは期待できません。それはうまくいきません。

そう

  • おそらく名前が付けられた新しい日時列を追加しますtmp_dispatchdate
  • 作成したクエリを使用して、日時の値をその列に書き込みます
  • データが正しく変換されたことを確認したら、ドロップしますdispatchdate
  • tmp_dispatchdateに名前を変更dispatchdate

問題のテーブルに主キーがある場合は、必要に応じて、PK を使用して適切なレコードを参照し、一時テーブルですべての「中間」作業を行うことができます。ただし、行おうとしていることを実行するには、列を削除して列を追加する必要があります。

于 2013-07-24T04:58:46.083 に答える