PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Предаване на параметър за дата към собствена заявка

Не можете да подадете ZonedDateTime в собствена SQL заявка. Трябва да го конвертирате в Календар:

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

И можете да преобразувате своя ZonedDateTime по този начин:

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

Този подход е описан тук:връзка




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да сравним данни между две бази данни в PostgreSQL?

  2. Как да получите достъп до процедурата, която връща setof refcursor от PostgreSQL в Java?

  3. 2 начина за показване на всички бази данни в PostgreSQL (psql)

  4. Комбинирайте триграма с класирано търсене в django 1.10

  5. Включване на LOOP в SQL