63

我需要将当前日期添加到 JDBC 调用的准备好的语句中。我需要以类似的格式添加日期yyyy/MM/dd

我试过了

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = new Date();
pstm.setDate(6, (java.sql.Date) date);

但我有这个错误:

threw exception
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

有没有办法获得java.sql.Date具有相同格式的对象?

4

10 回答 10

103

Ajava.util.Date不是java.sql.Date. 这是相反的方式。Ajava.sql.Date是一个java.util.Date

您需要java.sql.Date使用a可以提供的构造函数将其转换为 a。longjava.util.Date

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
于 2013-08-15T16:59:47.683 回答
42

只需一行:

java.sql.Date date = new java.sql.Date(Calendar.getInstance().getTime().getTime());
于 2015-08-14T20:53:21.187 回答
35

这些都太长了。

只需使用:

new Date(System.currentTimeMillis())
于 2018-06-27T15:23:54.147 回答
20
new java.sql.Date(Calendar.getInstance().getTimeInMillis());
于 2016-02-24T21:44:30.037 回答
4

由于 java.sql.Date 有一个需要“长时间”的构造函数,而 java.util.Date 有一个返回“长时间”的方法,我只是将返回的“长时间”传递给 java.sql.Date 来创建日期。

java.util.Date date = new java.util.Date();
java.sql.Date sqlDate = new Date(date.getTime());
于 2020-11-24T09:53:09.073 回答
3
于 2018-02-10T03:32:53.893 回答
3

会做: new Date(Instant.now().toEpochMilli())

于 2018-04-07T11:00:36.667 回答
3

为了获得“当前日期”(如今天的日期),您可以使用LocalDate.now()并将其传递给java.sql.Date方法valueOf(LocalDate)

import java.sql.Date;
...
Date date = Date.valueOf(LocalDate.now());
于 2020-04-20T18:19:26.367 回答
0

您可以通过以下方式实现您的目标:-

long millis=System.currentTimeMillis();  
java.sql.Date date=new java.sql.Date(millis);  

或者

// create a java calendar instance
Calendar calendar = Calendar.getInstance();

// get a java date (java.util.Date) from the Calendar instance.
// this java date will represent the current date, or "now".
java.util.Date currentDate = calendar.getTime();

// now, create a java.sql.Date from the java.util.Date
java.sql.Date date = new java.sql.Date(currentDate.getTime());
于 2018-02-09T11:02:21.777 回答
0

你所要做的就是这个

    Calendar currenttime = Calendar.getInstance();               //creates the Calendar object of the current time
    Date sqldate = new Date((currenttime.getTime()).getTime());  //creates the sql Date of the above created object
    pstm.setDate(6, (java.sql.Date) date);              //assign it to the prepared statement (pstm in this case)
于 2018-03-12T07:56:09.770 回答