【发布时间】:2014-02-17 17:51:37
【问题描述】:
我需要这样查询
SELECT * FROM tanks WHERE (creationDate >= ? or ? is null) and (creationDate >= ? or ? is null)
那我就设置好了
stmt.setObject(1, fromDate);
stmt.setObject(2, fromDate);
stmt.setObject(3, toDate);
stmt.setObject(4, toDate);
但我无法执行查询,因为我有一个异常,Java 无法确定参数 $2 的类型(抱歉,我不知道为什么,但所有异常都是俄语)。
当我摆脱 时?为 null 一切正常。
有人知道如何处理它吗?
【问题讨论】:
-
你所说的“所有例外都是俄语”是什么意思?
-
不确定postgresql,但在某些数据库服务器中,您可以将参数强制转换为显式类型(例如
CAST(? AS DATE) IS NULL) -
@Alexey
Caused by: org.postgresql.util.PSQLException: ОШИБКА: не удалось определить тип данных параметра $4 -
将
.setObject替换为.setDate会发生什么? -
谢谢你@MarkRotteveel 它有效!
标签: java postgresql date jdbc