2016-11-04 88 views
0

这里有很多讨论,但我所尝试的不起作用。到目前为止在我的表我存储的日期为string,但我认为这是不正确的做法。所以我创建了一个表:SQLite中的存储日期

CREATE TABLE "TRANSACTIONS" (
    "date" DATETIME, 
    ... 
} 

我想存储日期像2016-11-04 10:50,所以我使用方法:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 

我用prepared Statements插入记录的数据库,当我尝试这样做:

stm.setDate(1, timeStamp); 

我得到的String cannot be converted to Date。所以我将其转换为DATE

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
Date datee = formatter.parse(timeStamp); 

,然后我得到java.util.Date cannot be converted to java.sql.Date,所以我尝试这样做:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance().getTime()); 
java.sql.Date sqlDate = java.sql.Date.valueOf(timeStamp); 

,当我运行它,我得到java.lang.IllegalArgumentException

+0

可以使用了PreparedStatement.setTimestamp(新的时间戳(date.getTime())); –

回答

0

java.sql.Date代表日期,而不是日期和时间。 因为你逝去的"yyyy-MM-dd HH:mm"并抛出java.lang.IllegalArgumentException

String d1 = "2016-10-11"; 
java.sql.Date d = null ; 
d.valueOf(date1); 
System.out.println(d.valueOf(date1)); 

`

这将没有任何异常运行您收到此错误。 对于您所需要的格式,你应该使用java.sql.Timestamp

 String date1 = "2016-10-11 10:45"; 
    SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
    java.util.Date d2 = sm.parse(date1); 
    Timestamp time = new Timestamp(d2.getTime()); 
    System.out.println(time); 

输出 - 2016-10-11 10:45:00.0