0

effectiveと日付を表す 2 つのタイムスタンプ列があるテーブルがexpirationあり、現在のタイムスタンプがこれら 2 つの日付列に含まれる行をフェッチする必要があります。

これは、次のように SQL クエリに条件を入れることで実行できます
effectiveDate <= current_timestamp and current_timestamp < expirationDate

expirationDate問題は、 null でない場合に上記の条件が満たされることです。null の場合は、 のみ
effectiveDate <= current_timestampがチェックされます。

これは一種の動的 SQL だと思います。プロジェクトでHibernateを使用しています。私は基準APIまたはHQLまたはSQLのいずれかを使用できます。

これを行う方法を教えてください。

4

2 に答える 2

1

あなたの最初のバージョンは完全な SQL ではありません。しかし、あなたが望むのは次のようなものです:

where effectiveDate <= current_timestamp and
      (expirationDate is NULL or current_timestamp < expirationDate)
于 2013-04-22T18:25:20.440 に答える