str_to_date 的奇怪行为,可能是表格的混合?

Strange behavior with str_to_date, possible mixing of tables?

我对此查询有疑问,无法弄清楚问题出在哪里。 我正在尝试 运行: update earnings_history setDate_formatted= STR_TO_DATE(temp_date, '%m/%d/%Y'); 将我的字符串转换为日期,但出现此错误。

Error Code: 1292. Incorrect datetime value: '2015-02-29' for column 'Date_formatted' at row 5610

然而这个查询:select temp_date from earnings_history wheretemp_dateREGEXP '[-]'; 没有找到任何行。

我使用格式完全不同的 %Y-%m-%d table,但它们似乎是混合的?

我想您会发现您的 earnings_history table.

中有一个 temp_date 字段设置为 02/29/2015

您的 STR_TO_DATE() 调用正在指定 '%m/%d/%Y' 的格式。它正在查找具有该格式的日期并将其解析为 '%Y-%m-%d' 的标准 SQL 日期格式。然后,它会尝试将该日期插入到您键入的字段中。该类型不会采用无效日期,因此当它看到 2015-02-29 的无效日期时,它会抛出错误。您的 table 中没有 %Y-%m-%d 格式的日期;您的预期格式 %m/%d/%Y.

中的日期无效