0

我想从 HSQL 数据库中获取记录,查询如下:

ao.find(IssuesAD.class, Query.select().where("user=? AND (START_TIME = ? OR END_TIME = ? OR (convert(START_TIME,DATE) < convert(?,DATE) AND convert(END_TIME,DATE) > convert(?,DATE)) )",user,sqlDate,sqlDate)) 
// also tried by removing 'convert'

当我保存或检索时,我确实将 java.util.date 转换为 java.sql.date 格式。

上面的查询适用于检索与确切日期匹配的记录,即 START_TIME=? 或 END_TIME=? 但它不适用于日期范围(START_TIME < ? AND END_TIME > ?),即使存在记录。

数据库中的记录存在如下 - END DATE AS '2013-05-27 00:00:00.000000000', START DATE AS '2013-05-23 00:00:00.000000000'。

参数值为'2013-05-24',在上述记录之间虽然无法在结果中检索到。

此外,另一条记录 - 结束日期为“2013-05-30 00:00:00.000000000”,开始日期为“2013-05-23 00:00:00.000000000”。参数值为'2013-05-28',它应该检索但没有..

其他的东西:

final java.sql.Date sqlDate = new java.sql.Date(startdatefield.getTime());

logger.info("final date sql date:" + sqlDate);  //it prints as 2013-05-28

for (IssuesAD pi : ao.find(IssuesAD.class, Query.select().where("user=? AND (START_TIME = ? OR END_TIME = ? OR     (convert(START_TIME,DATE) < convert(?,DATE) AND convert(END_TIME,DATE) > convert(?,DATE)) OR (convert(START_TIME,DATE) > convert(?,DATE) AND convert(END_TIME,DATE) < convert(?,DATE)))",user,sqlDate,sqlDate)))  
{               
      ....

}

在数据库中 - START_DATE 和 END_DATE 两个字段都是“DATETIME”类型。

知道这里有什么问题...

谢谢

4

0 回答 0