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

Spring Data Rest:Truy vấn ngày là null ném một ngoại lệ postgres

Tôi đã dành thời gian xem xét vấn đề này vì tôi thực sự muốn so sánh "ngày là null" trong các truy vấn và đó là kết quả:

Khi bạn sử dụng " cast (foo.date as date) là null ", nó hoạt động OK nếu trường không null. Nếu trường là null, ngoại lệ này được ném ra:

org.postgresql.util.PSQLException: ERROR: cannot cast type bytea to date

Giải pháp là sử dụng kết hợp:

coalesce(:date, null) is null

Nó hoạt động tốt khi có hoặc không có dữ liệu trong trường được kiểm tra.

Ví dụ về truy vấn của tôi:

@Query("SELECT c "
        + " FROM Entity c "
        + " WHERE "
        + "       and ( (coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is null) "
        + "             or ((coalesce(c.date, null) is not null) "
        + "                 and ( "
        + "                        ((coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is not null) and c.date <= :dateUntil) "
        + "                     or ((coalesce(:dateUntil, null) is null and coalesce(:dateFrom, null) is not null) and c.date >= :dateFrom)"
        + "                     or (c.date between :dateFrom and :dateUntil)"
        + "                 )"
        + "             )"
        + "       ) "

Hy vọng nó hiệu quả với bạn!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn chuỗi văn bản có hex vào PostgreSQL dưới dạng bytea

  2. Làm thế nào để điều chỉnh một ứng dụng Ruby on Rails chạy trên Heroku sử dụng Heroku Postgres ở cấp độ sản xuất?

  3. ResultTransformer với createSQLQuery buộc không có camelCase trong các trường thực thể

  4. Hoạt động CASCADE có điều kiện cho ràng buộc khóa ngoại?

  5. Dấu thời gian sớm nhất được hỗ trợ trong PostgreSQL