无法根据日期范围查询获取结果

时间:2013-05-07 11:54:50

标签: java date datetime hsqldb

我想从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&lt;?AND END_TIME&gt;?),即使记录已存在。

在数据库记录中存在类似 - 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”类型。

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

由于

0 个答案:

没有答案