我试图使用java.util.Date作为输入,然后用它创建查询-所以我需要一个java.sql.Date。

我惊讶地发现它不能隐式或显式地进行转换——但我甚至不知道如何做到这一点,因为Java API对我来说仍然相当新。


当前回答

您可以使用此方法将util日期转换为sql日期,

DateUtilities.convertUtilDateToSql(java.util.Date)

其他回答

这个函数将返回一个从java日期对象转换而来的SQL日期。

public static java.sql.Date convertFromJAVADateToSQLDate(
            java.util.Date javaDate) {
        java.sql.Date sqlDate = null;
        if (javaDate != null) {
            sqlDate = new Date(javaDate.getTime());
        }
        return sqlDate;
    }

我认为最好的转变方式是:

static java.sql.Timestamp SQLDateTime(Long utilDate) {
    return new java.sql.Timestamp(utilDate);
}

Date date = new Date();
java.sql.Timestamp dt = SQLDateTime(date.getTime());

如果你想在SQL表中插入dt变量,你可以这样做:

insert into table (expireAt) values ('"+dt+"');

您可以使用此方法将util日期转换为sql日期,

DateUtilities.convertUtilDateToSql(java.util.Date)

将java.util.Date转换为java.sql.Date将丢失小时、分钟和秒。所以如果可能的话,我建议你像这样使用java.sql.Timestamp:

prepareStatement.setTimestamp(1, new Timestamp(utilDate.getTime()));

要了解更多信息,您可以检查这个问题。

别介意…

public class MainClass {

  public static void main(String[] args) {
    java.util.Date utilDate = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);

  }

}

解释了它。链接是http://www.java2s.com/Tutorial/Java/0040__Data-Type/ConvertfromajavautilDateObjecttoajavasqlDateObject.htm