我想从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”类型。
知道这里有什么问题......
由于