修复Java jdbc到DB2的无效数据会话

修复Java jdbc到DB2的无效数据会话,java,jdbc,timestamp,db2,type-conversion,Java,Jdbc,Timestamp,Db2,Type Conversion,每当我使用以下SQL运行准备好的语句时: SELECT SUM(TEST_UNITS) FROM TESTDB.TEST WHERE ((S_TS >= ? AND S_TS <= ?) or (E_TS >= ? AND E_TS <= ?) OR (S_TS < ? AND E_TS > ?)) DB2中的时间戳显示如下数据 2015-07-31-13.37.01.000000 因为TEST_单元在DB2中是一个BigInt,所以需要使用JDBCAPI

每当我使用以下SQL运行准备好的语句时:

SELECT SUM(TEST_UNITS) FROM TESTDB.TEST 
WHERE ((S_TS >= ? AND S_TS <= ?) or (E_TS >= ? AND E_TS <= ?) OR (S_TS < ? AND E_TS > ?))
DB2中的时间戳显示如下数据

2015-07-31-13.37.01.000000


因为TEST_单元在DB2中是一个BigInt,所以需要使用JDBCAPI getLong()来获取它。getInt()获取整数,因此可能会导致数据转换问题和精度/数据丢失

线路

msuSaver[i] = rs.getInt(1); 
需要

msuSaver[i] = rs.getLong(1); 

我没有检查整个代码是否需要更改msuSaver和相关格式。

因为测试单元在DB2中是一个BigInt,所以需要使用JDBC API getLong()来获取它。getInt()获取整数,因此可能会导致数据转换问题和精度/数据丢失

线路

msuSaver[i] = rs.getInt(1); 
需要

msuSaver[i] = rs.getLong(1); 

我没有检查整个代码是否需要更改msuSaver和相关格式。

因为测试单元在DB2中是一个BigInt,所以需要使用JDBC API getLong()来获取它。getInt()获取整数,因此可能会导致数据转换问题和精度/数据丢失

线路

msuSaver[i] = rs.getInt(1); 
需要

msuSaver[i] = rs.getLong(1); 

我没有检查整个代码是否需要更改msuSaver和相关格式。

因为测试单元在DB2中是一个BigInt,所以需要使用JDBC API getLong()来获取它。getInt()获取整数,因此可能会导致数据转换问题和精度/数据丢失

线路

msuSaver[i] = rs.getInt(1); 
需要

msuSaver[i] = rs.getLong(1); 


我没有查看整个代码,看您是否需要更改msuSaver和相关格式。

您在数据库中存储了什么?从新纪元开始几秒钟?从新纪元开始几毫秒?还有什么?请显示Java中绑定参数的代码片段。@mustaccio为什么被否决?@mustaccio Ok thx代码片段被添加。@Mureinik,在DB2 DB中,如果我使用DB2程序查看它,它将显示以下数据作为时间戳,例如:2015-07-31-13.37.01.000000数据库中到底存储了什么?从新纪元开始几秒钟?从新纪元开始几毫秒?还有什么?请显示Java中绑定参数的代码片段。@mustaccio为什么被否决?@mustaccio Ok thx代码片段被添加。@Mureinik,在DB2 DB中,如果我使用DB2程序查看它,它将显示以下数据作为时间戳,例如:2015-07-31-13.37.01.000000数据库中到底存储了什么?从新纪元开始几秒钟?从新纪元开始几毫秒?还有什么?请显示Java中绑定参数的代码片段。@mustaccio为什么被否决?@mustaccio Ok thx代码片段被添加。@Mureinik,在DB2 DB中,如果我使用DB2程序查看它,它将显示以下数据作为时间戳,例如:2015-07-31-13.37.01.000000数据库中到底存储了什么?从新纪元开始几秒钟?从新纪元开始几毫秒?还有什么?请显示Java中绑定参数的代码片段。@mustaccio为什么被否决?@mustaccio Ok thx代码片段被添加。@Mureinik,在DB2 DB中,如果我使用DB2程序查看它,它是一个默认的时间戳,它将以下数据显示为时间戳,例如:2015-07-31-13.37.01.000000非常感谢您修复了它!:)@WarGodNT-您还希望使用
prepsmt.setTimestamp()
而不是
prepsmt.setString()
来避免那里的类型转换问题。非常感谢您修复了它!:)@WarGodNT-您还希望使用
prepsmt.setTimestamp()
而不是
prepsmt.setString()
来避免那里的类型转换问题。非常感谢您修复了它!:)@WarGodNT-您还希望使用
prepsmt.setTimestamp()
而不是
prepsmt.setString()
来避免那里的类型转换问题。非常感谢您修复了它!:)@WarGodNT-您还希望使用
prepsmt.setTimestamp()
而不是
prepsmt.setString()
,以避免出现类型转换问题。