Java 时间戳格式必须为yyyy-mm-dd hh:mm:ss[.fffffffff]

Java 时间戳格式必须为yyyy-mm-dd hh:mm:ss[.fffffffff],java,jdbc,Java,Jdbc,我试图通过Java在Oracle数据库中插入一条记录。这是我的密码 public class CheckDateTime { public static void main(String[] args) { try{ Class.forName("Driver"); Connection con = DriverManager.getConnection("url","uname","pwd"); String text =

我试图通过Java在Oracle数据库中插入一条记录。这是我的密码

public class CheckDateTime {
public static void main(String[] args) {
    try{  
        Class.forName("Driver");  

        Connection con = DriverManager.getConnection("url","uname","pwd");  
        String text = "2013-09-04 13:30:00";
        Timestamp ts = Timestamp.valueOf(text);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");  
        String strDate= formatter.format(ts);  
        String query = "INSERT INTO TABLE VALUES(?,?);";        
        PreparedStatement stmt = con.prepareStatement(query);
        stmt.setString(1, "SK");
        stmt.setTimestamp(2, ts);
        System.out.println(stmt.executeUpdate());

        con.close();  

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

}}
但这似乎是一个错误

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

我不了解此错误的根本原因。请有人帮我解决。

请发布整个stacktrace。代码如图所示,
Timestamp.valueOf
不会引发异常,而
“2013-09-04 13:30:00”
。您所做的格式化是完全不必要的,因为您甚至不使用
strDate
formatter
的结果,并且
strDate
在代码中根本没有使用,这会造成混乱,请删除不必要的代码。@Frieder不,使用
setTimestamp
是正确的选择。更改为String text=“2013-09-04 13:30:00.00”;请张贴整个stacktrace。代码如图所示,
Timestamp.valueOf
不会引发异常,而
“2013-09-04 13:30:00”
。您所做的格式化是完全不必要的,因为您甚至不使用
strDate
formatter
的结果,并且
strDate
在代码中根本没有使用,这会造成混乱,请删除不必要的代码。@Frieder不,使用
setTimestamp
是正确的选择。更改为String text=“2013-09-04 13:30:00.00”;