0

Hibernateでjpa 3.oを使用しています。名前付きクエリが 1 つあります。

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= CURRENT_DATE

WPSTransaction は私のエンティティ クラスであり、createdDate は私のクラスの列の 1 つです。

Mysql データベースで正常に動作しています。CURRENT_DATEただし、SQL Server 2012 に移行していて、SQL サーバーが値をコンパイルしていないようです。私は方法GETNOW()NOW()方法を試しましたが、運がcurrent_date()ありCURRENT_TIMESTAMPませんでした。

4

3 に答える 3

2

ここで、 MS SQL Serverは標準に準拠してcurrent_dateいません。キーワードを提供していません。

GETDATE()リンクされたドキュメントが示すように、代わりに SQL サーバー固有の関数を使用する必要があります。

は仕様のキーワードであるため、MS SQL でユーザー定義関数を作成するだけでは、同じように機能することは期待current_dateできません。current_date()残念ながら、ここではデータベース固有のコードにこだわっています。

于 2014-06-30T07:52:30.637 に答える
1

どうですか:

Query q = entityManager.createQuery("SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= :d");
q.setParam("d", new Date());

データベース固有のコードは必要ありません。

于 2012-12-15T06:36:24.740 に答える
1

MS SQL で現在の日付を返す関数は GETDATE() であるため、クエリは次のようになります。

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate >= GETDATE()
于 2012-12-14T19:11:53.457 に答える