【问题标题】:Strange behavior with str_to_date, possible mixing of tables?str_to_date 的奇怪行为,可能混合表?
【发布时间】:2015-06-25 18:25:47
【问题描述】:

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

【问题讨论】:

  • 您的earnings_history.Date_formatted 类型是什么?
  • 我尝试了日期和日期时间
  • 你不必尝试,你应该知道。那你是什么类型的?顺便说一下temp_date
  • 现在是它的日期。 Temp_date 是 varchar

标签: mysql str-to-date


【解决方案1】:

我想您会发现您的 earnings_history 表中有一个 temp_date 字段设置为 02/29/2015

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

【讨论】:

  • 是的,我刚刚发现输入数据时日期以某种方式混淆了。现在尝试再次输入数据。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 2019-12-22
相关资源
最近更新 更多