2017-01-11 7 views
0

STR_TO_DATE関数を使用して、日付をmm/dd/yyyy形式を標準日付形式yyyy-mm-ddに変換しようとしています。私の日付のカラムのいくつかのフィールドはnullで、いくつかは日付を含んでいます。MySQL STR_TO_DATEがnullを返す

たとえば、2011年8月22日は2011年8月22日になる必要があります。

私は私の日付列を選択すると、それは次のようになります。私は、コード

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y') 
を使用してみました 2011年8月22日 2010年8月10日 2012年5月12日 など

列をNULL値で埋めました。また試しました

UPDATE table SET date = STR_TO_DATE(@date, '%m/%d/%Y') 

同じ結果が出ましたが、今回は警告メッセージが表示されませんでしたが、

+0

ではありませんそれらの価値が含まれています。あなたは、2回目に警告を出さないと言った( '@ date'は変数としてnullです)...初めて警告を出しましたか? –

+0

これを貴重な変更にするには、列の定義をdatetimeに変更する必要があります。そうしないと、DATETIME値をVARCHAR列に挿入しようとしています。 (これは動作しますが、それでも文字列として扱われ、日付関数では使用できません) –

+0

こんにちはMichael、ここでは私が投稿していない別の試みとして、実際にDATE値を持つ新しい列を作成しようとしました。そこに私の値を挿入してください、しかし、私はまだすべての値のNULLを持っています。私が受け取った警告は次のようになっています:1411 datetime値が正しくありません:str_to_date関数のための 'NULL' – hayfreed

答えて

0

最初のものが正しい:実行し、次に示す試し

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y') 

しかし、日付が(ない%のM /%D /%Y形式で)有効でない場合、それはNULL

を返します警告。それは間違っているかを表示します:

UPDATE table SET date = STR_TO_DATE(date, '%m/%d/%Y'); 
SHOW WARNINGS; 

はたぶん、いくつかの日付はあなたの列がない場合は動作しなければならないこと、フォーマット%のM /%D /%Y(posibly%D /%M /%Y)

+0

3つのエントリしか持たないダミーの日付ファイルを作成し、そのプロセスを繰り返したところ、それは機能しました。エラーの原因となっている大きな日付ファイルで何かが間違っている必要があります – hayfreed

+0

すべてのレコードでNULLを取得していますか?ファイルをチェックして、間違った値があるかどうかを調べることができます。また、UPDATEの後に 'SHOW WARNINGS'を呼び出すようにしてください。 –

+0

ハァッ。私はまったく同じコードをもう一度試してみました。とても奇妙。とにかく助けてくれてありがとう。 – hayfreed

関連する問題