Zxc*_*Mnb 31 java datetime vertica
编辑:请指出其他人是否没有看到这个问题,我做错了什么.
我试图通过VerticaDayTimeInterval构造函数向包含单个VerticaDayTimeInterval列的表添加行.不管我之前给出的是什么,精度和小数值都被错误地打印并且检索所有6的精度.
dayInt = new VerticaDayTimeInterval(10, 10, 01, 8, 2, 1, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString());
dayInt = new VerticaDayTimeInterval(10, 10, 02, 7, 3, 2, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString());
dayInt = new VerticaDayTimeInterval(10, 10, 03, 6, 43, 3, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString());
Run Code Online (Sandbox Code Playgroud)
表输出
DayInt
-------------------
10 10:03:49.000211
11 07:00:00.0002
9 09:09:05.000005
(3 rows)
Run Code Online (Sandbox Code Playgroud)
使用结果集重新打印和打印行.
for (int x=1 ; rs.next() ; ++x) {
VerticaDayTimeInterval dti = (VerticaDayTimeInterval)(rs.getObject(1));
System.out.println("vertica object tostring "+dti.toString()+" frac "+dti.getFraction()+" precision "+dti.getPrecision());
}
Run Code Online (Sandbox Code Playgroud)
产量
vertica object tostring 10 10:03:49.211000 frac 211000 precision 6
vertica object tostring 11 07:00:00.200000 frac 200000 precision 6
vertica object tostring 9 09:09:05.500000 frac 500000 precision 6
Run Code Online (Sandbox Code Playgroud)
精度始终是数据表示的准则。数据始终以特定精度存储,这是驱动程序(当然还有引擎)支持的最大精度。用户插入数据时使用的精度不会存储在数据库中,因为它仅在表示数据时有用。
经典 JDBC 驱动程序支持java.sql.Timestamp高达纳秒(9 位精度)。
Vertica JDBC 驱动程序支持VerticaDateTimeInteval高达微秒(6 位精度)。
当您想要在示例代码中指定 1、2 或 3 的精度时,我不知道您的意图到底是什么,但是,恕我直言,当您创建一个新的VerticaDateTimeInterval对象并且想要定义多个第二分数时,您有两个主要选项(有意义):
精度为 1 时,小数的数量以十分之一秒为单位。精度为 2,单位为百分之一秒。精度为 4,单位为秒的 1/10000。精度为 5,即 1/100000 秒。
因此,当数据库返回您的查询结果时,它应该通知您返回对象的fractions字段的整数内容的精度为6(意味着这是微秒数)。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |