【问题标题】:insert date value into oracle using java not working使用java将日期值插入oracle不起作用
【发布时间】:2017-01-28 07:33:40
【问题描述】:

我正在尝试将日期格式从 Java EE Eclipes 插入 Oracle。我可以插入空值,但不能插入日期值。日期可以在控制台中打印出来,但不会更新数据库。 以下是我的疑问:

插入日期值:(不工作) uDate = 20/Sep/16 的控制台输出

public void updateUnsubscribe(String empid) { 
  DateFormat df = new SimpleDateFormat("dd/MMM/yy");
  String uDate = df.format(new Date());
  String unSub = "udate MYDB set edate ='" + uDate + '" where emp = "empid"';
}

插入 NULL 值:(WORKING) uDate = null 的控制台输出

public void updateSubscribe(String empid) { 
  Date toNull = null;
  String sub = "udate MYDB set edate ='" + toNull + '" where emp = "empid"';
}

我没有收到任何错误,唯一的问题是日期字段没有插入日期。我错过了什么?我的日期字段格式不正确吗?

【问题讨论】:

  • 你的 DateFormat 可能是错误的(试试 d.d./MM/yy)
  • 你在 oracle 中的日期格式是什么?和dd/MMM/yy一样吗?
  • 输出是这样的 'Tue SEp 20 11:45:02 UTC 2016'

标签: java eclipse jakarta-ee oracle11g


【解决方案1】:

您可以使用 oracle to_date 函数将 varchar 转换为日期值,例如:

public void updateUnsubscribe(String empid) { 
  DateFormat df = new SimpleDateFormat("dd/MM/yy");
  String uDate = df.format(new Date());
  String unSub = "udate MYDB set edate =to_date('" + uDate + ', 'dd/MM/yyyy')" where emp = "empid"';
}

但是,最好使用 JDBC PreparedStatement 来完成此任务:

public void updateUnsubscribe(String empid) { 
  PreparedStatement ps = conn.prepareStatement("update MYDB set edate=? where emp=?");
  ps.setTimestamp(1, new java.sql.Timestamp(new Date()));
  ps.setString(2, empid);
  ps.executeUpdate();
}

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2018-10-23
    • 2016-01-21
    • 2017-04-26
    相关资源
    最近更新 更多