【问题标题】:str_to_date error in MySQL (Java)MySQL (Java) 中的 str_to_date 错误
【发布时间】:2015-01-20 10:46:24
【问题描述】:

我正在转换并存储在另一列中的以下列值

Nov 22 2014 00:00:00 AM

现在我正在使用以下查询将其转换为日期格式并存储在另一列中

UPDATE DataNov2014 SET Datee = str_to_date(Date,'%d %b %Y %H:%i:%s');

但我得到以下异常

线程“main”java.sql.SQLException 中的异常:日期时间不正确 值:函数 str_to_date 的“2014 年 11 月 22 日 00:00:00 AM”

我的查询/日期格式有什么错误吗?
任何帮助将不胜感激,谢谢

【问题讨论】:

  • Hour:min:sec 是 24 小时格式还是 12 小时格式?
  • 所以是 mysql 00:00:00 AM 中的问题无效。 00:00:00 AM 只能是 24 小时格式,而不是 12 小时格式。所以它需要是 24 小时格式,str_to_date 应该是str_to_date(Date,'%b %d %Y %H:%i:%s')
  • %r 时间,12 小时(hh:mm:ss 后跟 AM 或 PM).... 这是 mysql @AbhikChakraborty 中 12 小时时间的格式,对吧?
  • 是的,它是允许的,但你不能让 00:00:00 它在 12 小时格式中无效,它必须是 12:00:00 AM
  • 感谢您指出这个愚蠢的错误。现在我的时间是“2014 年 11 月 22 日 00:00:00”,更新查询显示“STR_TO_DATE(Date,'%d %b %Y %T')”。为什么这仍然给出同样的例外?

标签: java mysql datetime str-to-date


【解决方案1】:

这个

UPDATE DataNov2014 SET Date= to_char(Date,'mon dd yyyy mm:ss:hh');

【讨论】:

    【解决方案2】:

    我建议您使用PreparedStatementDate 绑定参数。此外,您可以使用try-with-resources。把它们放在一起,就像

    String sql = "UPDATE DataNov2014 SET Datee = ?";
    DateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
    try (PreparedStatement ps = conn.prepareStatement(sql)) {
        Date theDate = sdf.parse("11-22-2014 00:00:00");
        ps.setDate(1, new java.sql.Date(theDate.getTime()));
        int count = ps.executeUpdate();
        if (count > 0) {
            System.out.printf("Query updated %d rows.%n", count);
        } else {
            System.out.println("Query didn't update any rows");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    【讨论】:

    • 我从未使用过准备好的语句,你确定这会解决我的问题吗,因为我得到的异常是源日期格式!
    • @Gagan93 我建议你开始使用准备好的语句。另外,我很肯定,如果你有一个使用setDate() 的Java Date 对象会有所帮助(你不会从String 转换为Date,并且JDBC 驱动程序知道如何存储Date( s))。
    【解决方案3】:

    假设您的字段 Datee 数据类型为 Datetime

    UPDATE DataNov2014 SET Datee = str_to_date('Nov 22 00:00:00 AM','%M %d %Y %H:%i:%s');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      相关资源
      最近更新 更多