在SQLite中存储日期

时间:2016-11-04 08:55:31

标签: java sqlite date datetime prepared-statement

这里有很多讨论,但我所尝试的并不奏效。直到我的表格中我将日期存储为string,但我认为这不是正确的方法......所以我创建了一个表格:

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在DB中插入记录,当我尝试这样做时:

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

1 个答案:

答案 0 :(得分:0)

java.sql.Date表示日期,而不是日期和时间。 您收到此错误是因为您正在传递any并抛出"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);