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