gpt4 book ai didi

java - 使用jdbc在Oracle sql中过滤特定日期范围内的数据

转载 作者:行者123 更新时间:2023-11-30 02:04:58 25 4
gpt4 key购买 nike

我需要在特定日期范围内选择一些数据集,该表的日期和时间采用 “23-JUL-18 04.03.02.584000000 PM” 格式 (TIMESTAMP(3))。

使用java过滤23-JUL-18 04.00.0023-JUL-18 04.03.02之间的数据的方法是什么。

编辑:我需要使用准备好的语句传递日期范围,并且我正在使用 Java 7

提前谢谢您!

最佳答案

如果您通过 JDBC 从 Java 调用 Oracle,那么最好的办法可能是使用准备好的语句:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String lower = "2018-07-23 04:00:00";
String upper = "2018-07-23 04:03:02";
LocalDateTime lowerdt = LocalDateTime.parse(lower, formatter);
LocalDateTime upperdt = LocalDateTime.parse(upper, formatter);

String sql = "SELECT * FROM yourTable WHERE ts_col BETWEEN ? AND ?;";
Statement statement = conn.createStatement(sql);
statement.setTimestamp(1, Timestamp.valueOf(lowerdt));
statement.setTimestamp(2, Timestamp.valueOf(upperdt));
ResultSet rs = statement.executeQuery();
while (rs.next()) {
// process result set
}

这是使用准备好的语句针对 Oracle 运行带有时间戳的选择的 Java 8+ 方法。不需要解释太多,除了为了形成 BETWEEN 子句,我们从两个点的相当标准的字符串时间戳开始。然后,我们解析为LocalDateTime,最后将其带入java.sql.Timestamp

Here是一个有用的 GitHub 页面的链接,该页面显示了以各种不同方式使用 Java 8 和 Oracle 的 JDBC。

编辑:以下是如何在 Java 7 中执行与上述相同操作的示例:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String lower = "2018-07-23 04:00:00";
String upper = "2018-07-23 04:03:02";
Date lowerdt = formatter.parse(lower);
Date upperdt = formatter.parse(upper);
String sql = "SELECT * FROM yourTable WHERE ts_col BETWEEN ? AND ?;";
Statement statement = conn.createStatement(sql);
statement.setTimestamp(1, new java.sql.Timestamp(lowerdt.getTime()));
statement.setTimestamp(2, new java.sql.Timestamp(upperdt.getTime()));
ResultSet rs = statement.executeQuery();
while (rs.next()) {
// process result set
}

关于java - 使用jdbc在Oracle sql中过滤特定日期范围内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636134/

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