PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

स्प्रिंग डेटा रेस्ट:दिनांक शून्य है क्वेरी एक पोस्टग्रेज अपवाद फेंकता है

मैंने इसे देखने में कुछ समय बिताया है क्योंकि मैं वास्तव में क्वेरी में "तारीख शून्य है" की तुलना करना चाहता हूं और यह परिणाम है:

जब आप "cast(foo.date as date) का उपयोग करते हैं तो यह शून्य होता है ", यदि फ़ील्ड शून्य नहीं है तो यह ठीक काम करता है। यदि फ़ील्ड शून्य है तो यह अपवाद फेंक दिया जाता है:

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

समाधान का उपयोग सहसंयोजन है:

coalesce(:date, null) is null

परीक्षण किए गए क्षेत्र में डेटा होने या न होने पर यह ठीक काम करता है।

मेरी क्वेरी का उदाहरण:

@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)"
        + "                 )"
        + "             )"
        + "       ) "

आशा है कि यह आपके लिए काम करेगा!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक एनम के सभी मान प्राप्त करने के लिए SQL क्वेरी

  2. डेटाबेस अद्यतन आदेश

  3. PostgreSQL में एक ऑटो इंक्रीमेंट प्राथमिक कुंजी को कैसे परिभाषित करें

  4. कॉलम मान वाली पंक्तियों को शून्य के रूप में कैसे चुनें?

  5. PostgreSQL विदेशी कुंजी मौजूद नहीं है, विरासत का मुद्दा?