如何将Java TimeStamp转换为ms访问日期?

时间:2012-11-10 14:33:13

标签: java ms-access timestamp

我想在msaccess数据库中插入一个java时间戳,但是我收到的错误如下所示。 ms-access字段已设置为DATE数据类型。任何建议都将深表感谢。感谢

这是我的DAO类方法:

public void addSale(String saleDetails, String saleTotal, Timestamp saleTimestamp) 
                    throws ClassNotFoundException, SQLException {

Statement myStatement = getConnection();
String sql = "INSERT INTO Sale (SaleDetails, SaleTotal, SaleTimestamp)"
            + " VALUES ('"+saleDetails+"','"+saleTotal+"','"+saleTimestamp+"')";

myStatement.executeUpdate(sql);
closeConnection();

我的DTO方法:

public void storeSale(String saleDetails, String saleTotal, Timestamp saleTimestamp){
   DAO dao = DAO.getDAO();
   try {
      dao.addSale(saleDetails, saleTotal, saleTimestamp);
    } catch (ClassNotFoundException | SQLException ex) {
        Logger.getLogger(Sale.class.getName()).log(Level.SEVERE, null, ex);
    }

我的时间戳方法:

public Timestamp addTimestamp(){ 
    java.util.Date date= new java.util.Date();
return new Timestamp(date.getTime());
}

错误:     [Microsoft] [ODBC Microsoft Access驱动程序]条件表达式中的数据类型不匹配。

1 个答案:

答案 0 :(得分:3)

您需要将java.util.Data转换为java.sql.Date,或者如果您需要java.sql.Timestamp的精度,请将数据库类型更改为TIMESTAMP

创建java.sql.Date的一些代码:

 java.util.Date today = new java.util.Date();
 long t = today.getTime();
 java.sql.Date dt = new java.sql.Date(t);

然后你可以把java.sql.Date放在你的数据库中,对我来说总是有用。

对于信息:

  • java.sql.Date对应于存储年,月和日的SQL DATE,而忽略小时,分钟,秒和毫秒。此外,sql.Date与时区无关。
  • java.sql.Time对应于SQL TIME,仅包含有关小时,分钟,秒和毫秒的信息。
  • java.sql.Timestamp对应于SQL TIMESTAMP,它是纳秒的日期(注意util.Date仅支持毫秒!)。