将时间间隔与 JDBC 配合使用
JDBC 标准不包含用于时间间隔(两个时间点之间的持续时间)的数据类型。若要处理 Vertica 的 INTERVAL 数据类型,您必须使用 JDBC 特定于数据库的对象类型。
从结果集中读取时间间隔值时,使用 ResultSet.getObject()
方法检索该值,然后将其强制转换为 Vertica 时间间隔类之一: VerticaDayTimeInterval
(代表所有十种日期/时间的时间间隔)或 VerticaYearMonthInterval
(代表所有三种年/月时间间隔)。
注意
单位间隔样式不受支持。不要使用 SET INTERVALSTYLE 语句更改客户端应用程序中的时间间隔样式。在批量插入中使用时间间隔
将多个批插入到包含时间间隔数据的表时,您必须创建 VerticaDayTimeInterval
或 VerticaYearMonthInterval
类的实例以用于存放要插入的数据。您可以在调用类的构造函数时设置值,或者也可以在使用 setter 之后设置值。然后,可以使用 PreparedStatement.setObject()
方法插入时间间隔值。您还可以使用 .setString()
方法,并向其传递采用 "
DD ``HH:
MM:
SS"
或 "
YY-
MM"
格式的字符串。
以下示例演示了将数据插入到包含日/时间间隔和年/月时间间隔的表:
读取时间间隔值
可以使用 ResultSet.getObject()
方法从结果集读取时间间隔值,然后将对象转换为适当的 Vertica 对象类: VerticaDayTimeInterval
(代表日期/时间的时间间隔)或 VerticaYearMonthInterval
(代表年/月时间间隔)。如果您知道列包含时间间隔并且知道该时间间隔的类型,则可以轻松完成此操作。如果应用程序无法确定从中读取的结果集的数据结构,您可以测试列是否包含特定于数据库的对象类型,如果是的话,则可以确定该对象属于 VerticaDayTimeInterval
类还是 VerticaYearMonthInterval
类。
该示例将在控制台上输出以下内容:
Column 1 is a INTERVAL DAY TO SECOND
Column 1's value is 10 Days 7 Hours 5 Minutes
Column 2 is a INTERVAL YEAR TO MONTH
Column 2's value is 10 Years 6 Months
Column 1 is a INTERVAL DAY TO SECOND
Column 1's value is 10 Days 10 Hours 10 Minutes
Column 2 is a INTERVAL YEAR TO MONTH
Column 2's value is 12 Years 9 Months
另一个选项是使用数据库元数据来查找包含时间间隔的列。