繁体   English   中英

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

[英]Oracle: convert java date to Oracle date in java program

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

我尝试了以下选项:

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

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

b)在例程中使用SimpleDateFormat将String转换为Date:

  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)找不到键的日期,因此不会更新数据。

在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即可; 只有两个参数。

如果您正在使用循环读取线,请执行

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。

(更新用于现有记录。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM