java - 如何使用 oracle 中的 where 子句查询从 oracle 获取 TIMESTAMP WITH TIME ZONE 列值和行?
问题描述
我有一个列类型为 TIMESTAMP WITH TIME ZONE 的表。我想读取行 SELECT * FROM "TEST_TIMESTAMP_WTZ_t2" where time_with_zone = ?;
String d = "2021-10-18 16:11:10.0 Europe/Paris";
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.n VV");
ZonedDateTime tm = ZonedDateTime.parse(d, dtf2);
// OffsetDateTime odt =OffsetDateTime.parse(d,dtf2);
// String z = tm.getZone().getId();
// System.out.println(tm.getZone());
// ThIS IS THE MAIN CODE
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
// Calendar c = Calendar.getInstance();
// c.setTime(dateFormat.parse(d));
// c.setTimeZone(TimeZone.getTimeZone(z));
// Date date = dateFormat.parse(d);
// String parsed = dateFormat.format(date);
// Timestamp timestamp = new Timestamp(c.getTimeInMillis());
// Datum dtm = new TIMESTAMPTZ(con, new java.sql.Timestamp(c.getTimeInMillis()), c);
// Datum dtm = new TIMESTAMPTZ(con, new java.sql.Timestamp(c.getTimeInMillis()), tm.getZone());
// PreparedStatement ps = con.prepareStatement(query);
// ps.setObject(1,dtm);
// ResultSet rs = ps.executeQuery();
// Calendar c = Calendar.getInstance();
// while ((rs.next())) {
// System.out.println(rs.getObject(2));
// }
日期存在于数据库中,但我无法根据 where 子句获取。
有人可以帮我纠正我做错了什么吗?
解决方案
我建议您不要将现代日期时间 API 与传统 API 混合使用。java.util
日期时间 API 及其格式化 API已SimpleDateFormat
过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *。
使用java.time
现代日期时间 API,下面给出的是如何从类型字段中提取数据TIMESTAMP WITH TIMEZONE
:
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM mytable WHERE <some condition>");
while (rs.next()) {
// Assuming the column index of columnfoo is 1
OffsetDateTime odt = rs.getObject(1, OffsetDateTime.class));
System.out.println(odt);
}
rs.close();
st.close();
哪里columnfoo
是类型,TIMESTAMP WITH TIMEZONE
。
* 如果您正在为一个 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring 检查可用的 Java 8+ API。请注意,Android 8.0 Oreo 已经提供对java.time
.
推荐阅读
- javascript - 如何在 React 函数组件中不使用 useEffect 钩子获取数据?
- codenameone - 代号一如何将徽章添加到工具栏中的sideMenu图标
- python - CustomerUserModel 和 manytomanyfeilds
- python - API 网关不调用圣杯端点
- virtualenv - 在 update_repos 期间阅读文档“virtualenv:错误:无法识别的参数”
- angular - Angular:订阅后变量未更新
- python - 每当我尝试运行 export_png 时,Bokeh 都会引发 RuntimeError
- asp.net - 无法在 WebApi GET 中添加自定义标题文本
- c# - 使用命名空间时 C# 编译的内容
- powershell - 使用 powershell 按主题搜索电子邮件