【问题标题】:Checking for a null date before converting to java.sql.date from java.util.date在从 java.util.date 转换为 java.sql.date 之前检查空日期
【发布时间】:2013-06-30 15:25:09
【问题描述】:

我正在使用 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;
  }

但是,我在 sqlDateArchived = (dateBoxArchived.getValue().getTime()); 上遇到错误 (Type mismatch can not convert from long to date)

建议的修复方法是将其更改为长。我找不到可以解决此问题的任何更改。

非常感谢您的帮助。

问候,

格林

【问题讨论】:

  • new java.sql.Date(dateBoxArchived.getValue().getTime()) ??
  • 你如何声明sqlDateArchived

标签: java mysql eclipse


【解决方案1】:

几点:

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

试试这个:

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

【讨论】:

  • 嗨,波西米亚人,这行得通。非常感谢您的帮助。问候,格林。
【解决方案2】:

Date.getTime() 返回一个long。大概您的sqlDateArchivedDate。您不能将long 放入Date。要么将 sqlDateArchived 更改为 long,要么创建一个新的 Date,例如:

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

【讨论】:

    【解决方案3】:

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

    将最后一行转换为

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-29
      • 2016-02-14
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2014-04-19
      • 2018-04-03
      相关资源
      最近更新 更多