【问题标题】:Fetch results on the basis of date from db without considering time根据日期从数据库中获取结果而不考虑时间
【发布时间】:2015-07-13 17:53:07
【问题描述】:

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

@Query("from TableA where traveller = ?1 and direction = ?2 and targetDate = ?3")
List<TableA> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date date);

【问题讨论】:

  • 您使用的是哪个数据库,对于Oracle,您可以将时间和日期过滤
  • @SaurabhJhunjhunwala 这是杀死日期时间列索引的最佳方法。应该做的是between,将午夜的特定日期(包括)作为下限,将第二天午夜(排除)作为上限。
  • @fge: BETWEEN 会有点不准确,因为它包括下限和上限。准确地说:x &gt;= date AND x &lt; (date + 1).

标签: java sql postgresql hql


【解决方案1】:

尝试使用日期功能,可在此处找到:date(timestamp_field)

@Query("from TableA where traveller = ?1 and direction = ?2 and date(targetDate) = ?3")
List<TableA> findListOfRequestsWithDateAndTraveller(String traveller, String direction, Date date);

【讨论】:

    【解决方案2】:

    我通过在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);
    

    为了获取 startDate 和 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2015-08-17
      相关资源
      最近更新 更多