Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据数据库中的日期获取结果,不考虑时间_Java_Sql_Postgresql_Hql - Fatal编程技术网

Java 根据数据库中的日期获取结果,不考虑时间

Java 根据数据库中的日期获取结果,不考虑时间,java,sql,postgresql,hql,Java,Sql,Postgresql,Hql,我想从数据库中获取在特定日期发生的结果。问题是数据库包含日期+时间,但我只需要基于日期部分的结果 @Query("from TableA where traveller = ?1 and direction = ?2 and targetDate = ?3") List<TableA> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date date); @Query(“来自表A

我想从数据库中获取在特定日期发生的结果。问题是数据库包含日期+时间,但我只需要基于日期部分的结果

@Query("from TableA where traveller = ?1 and direction = ?2 and targetDate = ?3")
List<TableA> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date date);
@Query(“来自表A,其中Traveler=?1,direction=?2,targetDate=?3”)
列出FindListFrequestSwithDate和Traveler(字符串Traveler、字符串方向、日期);

尝试使用date函数,可在此处找到:

@Query(“从表A中,旅行者=?1,方向=?2,日期(targetDate)=?3”)
列出FindListFrequestSwithDate和Traveler(字符串Traveler、字符串方向、日期);

我解决了这个问题,用java而不是查询来处理它

@Query("from TableA where traveller = ?1 and direction = ?2 and targetTime >= ?3 and targetTime <= ?4")
List<PBillableRequest> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date startDate, Date endDate);

对于Oracle,您使用的是哪种数据库,您可以对时间进行中继并进行筛选dates@SaurabhJhunjhunwala这是消除日期时间列索引的最佳方法。应该做的是一个介于之间的
,以特定的一天的午夜(包括)为下限,第二天的午夜(排除)为上限。@fge:
介于
之间会有微妙的不准确,因为它包括下限和上限。确切地说:
x>=日期和x<(日期+1)
@Query("from TableA where traveller = ?1 and direction = ?2 and targetTime >= ?3 and targetTime <= ?4")
List<PBillableRequest> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date startDate, Date endDate);
public Date getEndOfDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
    return calendar.getTime();
}

public Date getStartOfDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTime();
}