PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chuyển tham số ngày cho truy vấn gốc

Bạn không thể chuyển ZonedDateTime vào một truy vấn SQL gốc. Bạn cần chuyển nó thành Lịch:

@Query(value = 
    "SELECT distinct a.* FROM action a "
    + "LEFT OUTER JOIN history h "
    + "ON a.id = h.action_id "
    + "AND h.user_id = :userId "
    + "WHERE a.occurrence='DAILY' AND (h.id IS NULL OR h.entry_date < :yesterday)", nativeQuery = true)
public List<Action> findAllAvailableActions(@Param("userId") Long userId, @Param("yesterday") Calendar yesterday);

Và bạn có thể chuyển đổi ZonedDateTime của mình theo cách này:

public Calendar convertToDatabaseColumn(ZonedDateTime entityAttribute) {
    if (entityAttribute == null) {
        return null;
    }

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(entityAttribute.toInstant().toEpochMilli());
    calendar.setTimeZone(TimeZone.getTimeZone(entityAttribute.getZone()));
    return calendar;
}

Phương pháp này được mô tả ở đây: liên kết




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuỗi so với văn bản bằng cách sử dụng Rails 3.2. * và Postgres - tôi có nên luôn chỉ sử dụng văn bản không

  2. Tôi có thể sử dụng các hàm Postgres để tìm các điểm bên trong một hình chữ nhật xoay có kích thước cố định không?

  3. Chèn nhiều hàng trong một bảng dựa trên số trong bảng khác

  4. Lập chỉ mục nâng cao liên quan đến điều kiện OR-ed (pgsql)

  5. Hibernate 3.3.2GA tải không đúng dữ liệu bytea từ PostgreSQL 9.0 và tất cả các ánh xạ loại đều đúng