0

我对此查询有疑问,无法弄清楚问题出在哪里。我正在尝试运行: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 ,但它们似乎混合在一起?

4

1 回答 1

1

我想你会发现你的表temp_date中设置了一个字段。02/29/2015earnings_history

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

于 2015-04-18T23:46:11.113 回答