PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Lewati parameter tanggal ke kueri asli

Anda tidak dapat meneruskan ZonedDateTime ke kueri SQL asli. Anda perlu mengonversinya ke Kalender:

@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);

Dan Anda dapat mengonversi ZonedDateTime dengan cara ini:

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;
}

Pendekatan ini dijelaskan di sini:tautan




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dengan JOOQ json binding

  2. Bagaimana saya bisa memasukkan stempel waktu dengan zona waktu di postgresql dengan pernyataan yang disiapkan?

  3. Python psycopg2 tidak dimasukkan ke dalam tabel postgresql

  4. Dapatkah INSERT [...] ON CONFLICT digunakan untuk pelanggaran kunci asing?

  5. Kesalahan sintaksis postgres pada atau di dekat IF