sql >> Database >  >> RDS >> PostgreSQL

Spring Data Rest:Date is null-query genereert een postgres-uitzondering

Ik heb hier enige tijd naar gekeken omdat ik "datum is null" echt wil vergelijken in zoekopdrachten en dat is het resultaat:

Wanneer u de "cast(foo.date as date) gebruikt, is null ", het werkt goed als het veld niet null is. Als het veld null is, wordt deze uitzondering gegenereerd:

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

De oplossing is om samen te voegen:

coalesce(:date, null) is null

Het werkt prima om al dan niet gegevens in het veld getest te hebben.

Voorbeeld van mijn vraag:

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

Ik hoop dat het voor je werkt!



  1. Pooling van Postgresql-verbindingen in Erlang

  2. HTTP-fout 500.22 - Interne serverfout (er is een ASP.NET-instelling gedetecteerd die niet van toepassing is in de modus Geïntegreerde beheerde pijplijn.)

  3. Verkrijg het SQL-queryresultaat zonder de tabelindeling

  4. phpActiveRecord Onjuist datum/tijdformaat