在从java.util.date转换为java.sql.date之前检查空日期

时间:2013-07-03 04:07:57

标签: java mysql eclipse

我正在使用Eclipse Juno,java和MySQL。

我想在将日期转换为null之前检查日期是否为java.sql.Date,然后再将其写入数据库。

以下作品提供的日期不为空:

java.sql.Date sqlPackIn = new java.sql.Date(dateBoxArchived.getValue().getTime());

所以我先检查null:

//TODO check for a null date and handle it for dateBoxArchived and dateBoxPackOut
java.sql.Date sqlDateArchived = new java.sql.Date(System.currentTimeMillis());
if (dateBoxArchived.getValue() != null){
    sqlDateArchived = dateBoxArchived.getValue().getTime();
} else {
  sqlDateArchived = null;
  }

但是,我在Type mismatch can not convert from long to date

上收到错误(sqlDateArchived = (dateBoxArchived.getValue().getTime());

,建议的修复方法是将其更改为long。我无法找到解决此问题的任何改变。

非常感谢您的帮助。

此致

格林

3 个答案:

答案 0 :(得分:3)

有些观点:

  • 你从不使用当前时间的初始值,所以不要编码
  • 您应该将现有日期的时间传递给构造函数
  • 您只需一行

试试这个:

java.sql.Date sqlDateArchived = dateBoxArchived.getValue() == null ? null : new java.sql.Date(dateBoxArchived.getValue().getTime());

答案 1 :(得分:1)

Date.getTime()返回long。大概你的sqlDateArchivedDate。您无法将long放入Date。要么将sqlDateArchived更改为长,要么创建新的Date,如:

sqlDateArchived = new Date(dateBoxArchived.getValue().getTime());

答案 2 :(得分:0)

在你的代码中 if (dateBoxArchived.getValue() != null){ sqlDateArchived = dateBoxArchived.getValue().getTime();

将最后一行转换为

sqlDateArchived = new Date(dateBoxArchived.getValue().getTime());`