java - 如何在数据库中插入时间戳?

标签 java jdbc

我收到此错误:

java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

这是我的java代码:

<%  int reg;

        String sdate = request.getParameter("sdate");
        //Timestamp ts=request.get
      //out.println(sdate);
         String text = "0000-00-00 00:00:00";
       Timestamp ts = Timestamp.valueOf(text);
       // Timestamp ts1=Timestamp.valueOf(sdate);
       //  Timestamp ts2=Timestamp.valueOf(edate);
    try{
          String s;
      Format formatter;
     Date date = new Date(sdate);
     //out.println(date);
      formatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
     s = formatter.format(date);
     out.println(s);
        PreparedStatement ps=cn.prepareStatement("insert into c1 values(?)");
                           // ps.setString(1,ts);
         ps.setTimestamp(1,ts);



                            int i=ps.executeUpdate();
                            if(i==1)
                        {
                       pw.println("record inserted");
                        }
                        else
                        {
                        pw.println("not iNSERTED");
                        }
                        //cn.close();

                       }
                 catch(Exception e)
                        {
                            out.println(e.toString());
                        }

    %>

有什么建议吗?

最佳答案

Shakti,您需要解决该错误。 java.lang.IllegalArgumentException:时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]

然后查看您设置日期格式的方式。 您需要更改下面的行

  formatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");

至:

 formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

请注意日期中连字符与您使用的冒号字符的区别和用法。

更新1

好吧,在 @sotirios 发表评论后,我决定做一些额外的研究,我发现了 this post并学到了一些东西。您不能给出 0000-00... 日期配置,因为 MySQL [使用“零日期”作为特殊占位符

简单明了的解决方案是将日期字符串更改为

String text = "0000-00-00 00:00:00";

至少

String text = "0001-01-01 00:00:00";

如果您确实想发送 0000-00-... 日期字符串,我相信解决方案是将“zeroDateTimeBehavior=convertToNull”指定为 MySQL 连接的参数(在数据源 URL 中或作为附加属性),例如:

jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull

这将导致所有此类值作为 NULL 发送。

关于java - 如何在数据库中插入时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21119096/

相关文章:

java - 如何使用 JavaMail API 通过 Java 发送电子邮件中的二进制附件?

java - spring-boot @Scheduled pool-size 调试

java.lang.IndexOutOfBoundsException : Invalid index 20, 大小为 20

java - JDBC DB 资源关闭性能问题

java - ExecuteBatch() 未更新

java - 有没有办法在 Java 运行时检查对象是否具有特定方法?

java - 如何避免以下代码中的Java.util.IllegalStateException?

java - JDBC(微软SQL服务器): No suitable driver found for url

java - 传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议(protocol)流不正确。参数 1 ("") : Data type 0x38 is unknown

java - PostgreSQL:通过 Java 更新我的用户表