java - Oracle:在java程序中将java日期转换为Oracle日期

标签 java oracle

我有一个 java 程序,它从输入文件中以字符串形式读取日期并更新 Oracle 表,其中该日期是索引字段的一部分。

我尝试了以下选项:

a) 从 csv 文件中读取数据;作为字符串

109920541;2013-01-17 11:48:09;EDWARD ANTHONY;

b) 在例程中使用 SimpleDateFormat 将字符串转换为日期:

  java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  java.util.Date dt = formatter.parse("2013-01-17 11:48:09");

c) 使用此日期准备我的 sql stmt:

String update_query = "UPDATE "+ tableName +" SET NAME = ? WHERE ID = ? AND DATE_TIME = ?";
java.sql.Connection conn = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);  
java.sql.PreparedStatement pstmt = conn.prepareStatement(update_query);
if (dt not null) {
  pstmt.setObject(1, new java.sql.Timestamp(dt.getTime()),java.sql.Types.DATE);
}
pstmt.executeBatch();

d) 这找不到作为 key 一部分的日期,因此数据不会更新。

在 sql Developer 中,我使用以下查询来获取行:

SELECT * FROM table
WHERE ID = '1099205410'
AND DATE_TIME = TO_DATE('2013-01-17 11:48:09', 'YYYY-MM-DD HH24:MI:SS');

如何将 java 字符串转换为 Oracle 日期?

谢谢。

最佳答案

对于单行:

pstmt.setString(1, name);
pstmt.setInt(2 id);
pstmt.setTimeStamp(3, ew java.sql.Timestamp(dt.getTime()));
pstmt.executeUpdate();

如果 DATE_TIME 值并不总是出现在 CSV 数据中,只需使用第二个PreparedStatement;只有 2 个参数。

如果您使用循环读取这些行,请执行以下操作

for ... {
    ...
    pstmt.clearParameters();
    pstmt.setString(1, name);
    pstmt.setInt(2 id);
    pstmt.setTimeStamp(3, new java.sql.Timestamp(dt.getTime()));
    pstmt.addBatch();
}
pstmt.executeBatch();

您可以考虑使用新的时间 API。

(更新适用于现有记录。)

关于java - Oracle:在java程序中将java日期转换为Oracle日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56256354/

相关文章:

java - JPA 作为多线程

php - Codeigniter和Oracle获取插入查询的last_id

java - 如何使正则表达式匹配组排除匹配字符?

java - 无法将焦点转移到未显示的 CardLayout JPanel

javax.ws.rs.client.Client如何配置readTimeOut?

java - 我最近将我的项目转换为 Maven。但出现错误Resource read error : Could not load com/sun/xml/txw2/Content. class

sql - Oracle SQL Developer,执行脚本不会停止运行

java - 在 ibatis 中是否可以在同一个插入查询中有多个 selectKey 子句?

sql - 建议一种有效的查询方式

java - 远程运行 map 查询失败。在节点上执行 map 查询失败