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

मूल क्वेरी के लिए दिनांक पैरामीटर पास करें

आप मूल SQL क्वेरी में ZonedDateTime पास नहीं कर सकते। आपको इसे कैलेंडर में बदलने की आवश्यकता है:

@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. शामिल नहीं हो सकता और अगली कड़ी में चयन नहीं कर सकता -- PG::SyntaxError

  3. Postgresql डेटाटाइम में दिनों की संख्या कैसे जोड़ें?

  4. एक एंड्रॉइड ऐप के लिए कनेक्शन पूलिंग जो पोस्टग्रेस्क्ल डीबी से जुड़ता है

  5. एसक्यूएल 'इन' स्टेटमेंट में पैरामीटर कैसे पास करें?