gpt4 book ai didi

java - 如何使用 JDBC 在 Oracle 中插入很长的时间(以毫秒为单位)

转载 作者:行者123 更新时间:2023-12-02 11:29:15 24 4
gpt4 key购买 nike

我有一个 long 类型,它存储自纪元以来的毫秒数,我想使用 jdbc 准备好的语句将其插入到 oracle Date 中。我尝试了以下方法 -

String query =  "insert into tempp values(? , ?)";
ps = conn.prepareStatement(query);

String longString1 = "1521142078000";
String longString2 = "1521566664738";

long longType1 = new Long(longString1).longValue();
long longType2 = new Long(longString2).longValue();

java.util.Date d1 = new java.util.Date(longType1);
java.util.Date d2 = new java.util.Date(longType2);

ps.setDate(1, new java.sql.Date(longType1));
ps.setDate(2, new java.sql.Date(longType2));

问题在于,在 Oracle 中,它的保存没有时间部分,只有日期 -

Date1                      Date2
--------------------------------------
15-MAR-18 00:00:00 20-MAR-18 00:00:00

有没有一种方法可以保留 Oracle 中的时间。如果我使用以下内容,我可以看到时间部分被保留。但这是当前时间戳,我想要与自纪元以来的长毫秒表示的时间相对应的日期/时间。

String query =  "insert into tempp values(sysdate , sysdate)";

最佳答案

我想你想要 Oracle 中的日期,而不是时间戳?我更像是一个 Oracle 人,而不是 Java 人,但它就是这样,就像其他评论员所说的那样,java.sql.Timestamp 将为您提供时间部分

import java.sql.*;


public class Class1 {

public static void main(String[] args) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Connection conn = null;
try {
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@//localhost/xe","scott","tiger");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String query = "insert into tempp values(? , ?)";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(query);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String longString1 = "1521142078000";
String longString2 = "1521566664738";

long longType1 = Long.parseLong(longString1);
long longType2 = Long.parseLong(longString2);

Timestamp d1 = new Timestamp(longType1);
Timestamp d2 = new Timestamp(longType2);

ps.setTimestamp(1, d1);
ps.setTimestamp(2, d2);

ps.execute();
}

}

这是表格

create table tempp (a date, b date);

这是结果

select to_char(a,'mm/dd/yyyy hh24:mi:ss'), to_char(b,'mm/dd/yyyy hh24:mi:ss') from tempp;

2018年3月15日15:27:58 2018年3月20日13:24:24

关于java - 如何使用 JDBC 在 Oracle 中插入很长的时间(以毫秒为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com