我有一个 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/