有効な日付形式ではないVARCHAR文字列を、VARCHARとしても格納されている別のテーブルに挿入しようとしています。私は、文字列の形式が無効である場合はNULLを返すことを想定され、これを、達成するためにSTR_TO_DATEを使用しようとしている: Error Code: 1411. Incorrect datetime value: 'some random string that isnt a date' for function str_to_date
:無効な日付形式で文字列のエラーがスローされますMySQL WHERE STR_TO_DATE IS NULLを挿入できません
INSERT INTO DateErrors
SELECT `row_id`,`date_string`
FROM `source_table`
WHERE STR_TO_DATE(`date_string`,'%d-%m-%Y') IS NULL
を。このエラーを投げる代わりに、これらの文字列値をDateErrorsに挿入します。
ただし、SELECTクエリだけを実行すると、エラーをスローせずにdate_string
が無効な行が返されます。
ISなぜすべきですか?ヌル値を探している場合は、フォーマットする必要はありません。 – PaulProgrammer
@PaulProgrammer私は、無効な日付が 'NULL'を返すと仮定していると思いますが、実際には' 00-00-0000'と表示されることがあります。 – tadman
最初にこの問題を避けるためには、日付を格納するために 'DATE'カラムと* only *' DATE'カラムを使うように注意してください。理想的な形式は 'YYYY-MM-DD'またはISO-8601形式です。他のすべてはあいまいさにつながります。 – tadman