str_to_date 的奇怪行为,可能是表格的混合?
Strange behavior with str_to_date, possible mixing of tables?
我对此查询有疑问,无法弄清楚问题出在哪里。
我正在尝试 运行: 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_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
.
中的日期无效
我对此查询有疑问,无法弄清楚问题出在哪里。
我正在尝试 运行: 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_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
.