使用str_to_date的奇怪行为,可能混合表?

时间:2015-04-18 23:16:30

标签: mysql str-to-date

我对此查询存在问题,无法确定问题的来源。 我正在尝试运行:update earnings_history set Date_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 where temp_date REGEXP '[-]';找不到任何行。

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

1 个答案:

答案 0 :(得分:1)

我认为您会在temp_date表格中将02/29/2015字段设置为earnings_history

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

的日期无效