簡體   English   中英

如何在 JPA 查詢中格式化日期

[英]How to format Date in JPA query

我有一個 SpringBoot 應用程序,我在其中使用存儲庫 class 來查詢我的 Oracle 數據庫表。

以下是查詢和關聯的 function 的定義方式:

@Query( value =" SELECT status "+
                   " FROM tb1 " +
                   " WHERE " +
                   " to_date(cob_Date,'dd-MON-yy') = to_date(:cobDate,'yyyy-mm-dd') " +
                   " AND business_Day ='BD3' " +
                   " AND intra_day ='INTRA_06' " +
                   " AND datasource_name =:datasource" +
                   " AND upper(status) = 'COMPLETED' " +
                   " AND frequency = 'MONTHLY' " +
                   " AND processed = 'Y' " +
                   " ORDER BY create_date desc FETCH FIRST 1 rows only"
                   , nativeQuery=true)
    List<String> getImpalaJobStatus(@Param("intraDay") String intraDay,
                                                     @Param("businessDay")  String businessDay,
                                                     @Param("cobDate") LocalDate cobDate,
                                                     @Param("datasource") String datasource);

如果我在 SQL 開發人員中運行這個查詢,那么我會得到我的結果,但是如果我從我的 SpringBoot 應用程序運行它,它什么都不返回。

我懷疑我在日期字段“COB_DATE”和 WHERE 下的這個子句上做錯了什么:

" to_date(cob_Date,'dd-MON-yy') = to_date(:cobDate,'yyyy-mm-dd') " +

我試了一下:

" cob_Date =:cobDate "

但它也沒有用。

在方法簽名cobDate聲明為LocalDate意味着您已經擁有日期格式的值。 如果是這樣,則不需要在查詢中調用to_date() 嘗試直接綁定LocalDate值:

@Query( value =" SELECT status "+
               " FROM tb1 " +
               " WHERE " +
               " to_date(cob_Date,'dd-MON-yy') = :cobDate " +
               " AND business_Day ='BD3' " +
               " AND intra_day ='INTRA_06' " +
               " AND datasource_name =:datasource" +
               " AND upper(status) = 'COMPLETED' " +
               " AND frequency = 'MONTHLY' " +
               " AND processed = 'Y' " +
               " ORDER BY create_date desc FETCH FIRST 1 rows only"
               , nativeQuery=true)
List<String> getImpalaJobStatus(@Param("intraDay") String intraDay,
                                @Param("businessDay") String businessDay,
                                @Param("cobDate") LocalDate cobDate,
                                @Param("datasource") String datasource);

請注意,您的 Oracle JBDC 驅動程序應該知道如何將LocalDate值編組到數據庫,以便查詢有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM